我想到了语法:
var a, b, c = {};
意味着三个变量是分开的,而不是对同一个{}的引用。
这是因为{}是一个对象,这是标准行为吗?
所以,如果我这样做:
var a, b, c = 0;
三者确实是分开的而不是参考?
谢谢, 韦斯利
答案 0 :(得分:11)
他们应该不一样,不。仅为c
分配值。
a
和b
,但不会初始化为任何东西(它们是未定义的)。 c
作为其中唯一一个,会被初始化为{}
在写几行时可能更清楚:
var a, // no assignment
b, // no assignment
c = {}; // assign {} to c
答案 1 :(得分:4)
var a, b, c = {};
这将声明3个变量(a,b,c),但只定义1个变量(c)。
var a, b, c = 0;
这将声明3个变量(a,b,c),但只定义1个变量(c)。
答案 2 :(得分:1)
在示例中,您只定义最后一个元素
a
和b
未定义
答案 3 :(得分:0)
var a, b, c = {};
仅定义最后一个变量c
。它类似于语法var a = {}, b = [], c = 0;
这只是宣告多个变种的简短手段。
答案 4 :(得分:0)
使用coma分隔变量可以更紧凑地在同一范围内定义多个变量。但是,在您的示例中,只有c = {}
和a
以及b
为undefined
。您可以使用类似的构造来分配类似
var a = {first: 'foo'},
b = {second: 'bar'},
c = {third: 'foobar'};
等于
var a = {first: 'foo'}, b = {second: 'bar'}, c = {third: 'foobar'};
还有
var a = {first: 'foo'};
var b = {second: 'bar'};
var c = {third: 'foobar'};
每个人只会参考他们各自的对象。使用昏迷基本上只是一个视觉方面。
答案 5 :(得分:0)
是的,三者是分开的。
逗号运算符计算左操作数,然后计算右操作数,然后返回右操作数的值。
如果你只依赖于对操作数的评估并且不对返回的值做任何事情,那么这就是一个很好的方法来在一行中声明一堆变量。
var i = 0, j = 1, k = 2;
基本上等同于var i = 0; var j = 1; var k = 2
另一个用途是在不使用;
的情况下将多个操作压缩到一行,就像在具有多个循环变量的for循环中一样:
for(var x=0,y=5; x < y; x++,y--)
注意x ++和y--如何在同一行上执行。