【问题标题】:"use strict": Assign Value to Multiple Variables“使用严格”:为多个变量赋值
【发布时间】:2015-07-14 15:11:21
【问题描述】:

"use strict"; javascript 中还有其他方法可以将一个值初始化为多个变量吗?因为这样做:

var x = y = 14;

会导致错误:Uncaught ReferenceError: y is not defined

这里有我的参考资料:

Set multiple variables to the same value in Javascript

【问题讨论】:

  • 是的,这确实成功地设置多个变量。但它只声明 x

标签: javascript variables var


【解决方案1】:

var x = y = 14; 有副作用,这就是为什么它在严格模式下是不允许的。即,y 成为全局变量。

当你说

var x = y = 14;

相当于

var x;
y = 14;
x = y;

其中x 被声明为局部变量,y 被创建为全局变量。

有关使用var 声明变量的更多信息,请参阅this question。此外,值得注意的是,ES6 引入了the keyword let,它启用了块级别的范围,而var 则存在函数级别的范围。

最后,如果你想给两个变量赋值,下面的任何一个都可以

var x, y;
x = y = 14;

var x = 14,
    y = x;

var x = 14,
    y = 14;

var x = 14;
var y = 14;

【讨论】:

  • 最后一个示例仍然使y 全局化,不是吗?
  • 其实var x = y = 14;等价于y = 14; var x = 14;。但我想顺序不是很重要。在那种情况下。
  • 你是对的。谢谢@FelixKling。编辑了我的答案以反映您的更正。
  • 我错了。你是正确的,它是var x = 14;(因为y = 14)导致14
  • @FelixKling 想具体点,相当于var x; y = 14; x = y; :D
【解决方案2】:

是的 - 不要混合声明和赋值。

var x, y;
x = y = 14;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多