var a,b,c = {}

时间:2011-08-04 12:59:34

标签: javascript object reference assignment-operator

我想到了语法:

var a, b, c = {};

意味着三个变量是分开的,而不是对同一个{}的引用。

这是因为{}是一个对象,这是标准行为吗?

所以,如果我这样做:

var a, b, c = 0;

三者确实是分开的而不是参考?

谢谢, 韦斯利

6 个答案:

答案 0 :(得分:11)

他们应该不一样,不。仅为c分配值。

只会声明

ab,但不会初始化为任何东西(它们是未定义的)。 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)

在示例中,您只定义最后一个元素

ab未定义

答案 3 :(得分:0)

var a, b, c = {};仅定义最后一个变量c。它类似于语法var a = {}, b = [], c = 0;

这只是宣告多个变种的简短手段。

答案 4 :(得分:0)

使用coma分隔变量可以更紧凑地在同一范围内定义多个变量。但是,在您的示例中,只有c = {}a以及bundefined。您可以使用类似的构造来分配类似

的内容
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--如何在同一行上执行。