"use strict": 为多个变量赋值

7

是的,这确实成功地设置了多个变量。但它只声明x - Bergi
2个回答

21

var x = y = 14; 中有副作用,因此在严格模式下不允许。具体来说,y 将成为全局变量。

当你说

var x = y = 14;

它等同于

var x;
y = 14;
x = y;

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

有关使用var声明变量的更多信息,请参见此问题。此外,值得注意的是,ES6引入了关键字let,它允许块级作用域,与存在于var的函数级作用域形成对比。

最后,如果您想要给这两个变量赋值,以下任何一种方法都可以:

var x, y;
x = y = 14;

var x = 14,
    y = x;

var x = 14,
    y = 14;

var x = 14;
var y = 14;

你是正确的。谢谢@FelixKling。我编辑了我的答案以反映你的更正。 - sfletche
我错了。你是正确的,var x = 14;(因为 y = 14)会得到 14 的结果。 - Felix Kling
如果你想要更具体一些,它相当于 var x; y = 14; x = y; :D - Niet the Dark Absol
@NiettheDarkAbsol:我曾经考虑过,但是不想同时引入提升。 ;) - Felix Kling
感谢@FelixKling和@NiettheDarkAbsol的更正。我已经更新了我的回答,以我认为我们都认为是var x = y = 14;的正确等效形式。 - sfletche
显示剩余4条评论

7
没错 - 不要混合声明和赋值。
var x, y;
x = y = 14;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接