变量 a, b, c =
Posted
技术标签:
【中文标题】变量 a, b, c =【英文标题】:var a, b, c = 【发布时间】:2011-10-19 23:42:57 【问题描述】:我认为语法:
var a, b, c = ;
意味着这三个变量是独立的,而不是对同一个 的引用。
这是因为 是一个对象并且这是标准行为吗?
如果我这样做:
var a, b, c = 0;
这三个确实是分开的而不是引用?
谢谢, 卫斯理
【问题讨论】:
你能解释更多吗?我不明白 我不明白。在您的第一个示例中,a
和 b
是 undefined
。什么意思?
你的意思是var a = b = c = ;
【参考方案1】:
他们不应该是一样的,不。只有c
会被赋值。
a
和 b
只会被声明,但不会初始化为任何东西(它们是未定义的)。 c
作为其中唯一的一个,将被初始化为
也许写成几行会更清楚:
var a, // no assignment
b, // no assignment
c = ; // assign to c
【讨论】:
【参考方案2】:var a, b, c = ;
这将声明 3 个变量 (a, b, c) 但只定义 1 个变量 (c)。
var a, b, c = 0;
这将声明 3 个变量 (a, b, c) 但只定义 1 个变量 (c)。
【讨论】:
【参考方案3】:在示例中,您只定义最后一个元素
a
和 b
未定义
【讨论】:
【参考方案4】:var a, b, c = ;
只定义了最后一个变量,即c
。它类似于var a = , b = [], c = 0;
的语法
这只是声明多个变量的简写。
【讨论】:
【参考方案5】:使用逗号分隔变量可以更紧凑地在同一范围内定义多个变量。但是,在您的示例中,只有 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';
每个人都只会引用他们各自的对象。使用昏迷基本上只是一个视觉方面。
【讨论】:
【参考方案6】:是的,这三个是分开的。
逗号运算符计算左操作数,然后计算右操作数,然后返回右操作数的值。
如果您只依赖操作数的求值而不对返回的值做任何事情,那么这是一种连续声明一堆变量的好方法。
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-- 是如何在同一行上执行的。
【讨论】:
以上是关于变量 a, b, c =的主要内容,如果未能解决你的问题,请参考以下文章