变量 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;

这三个确实是分开的而不是引用?

谢谢, 卫斯理

【问题讨论】:

你能解释更多吗?我不明白 我不明白。在您的第一个示例中,abundefined。什么意思? 你的意思是var a = b = c = ; 【参考方案1】:

他们不应该是一样的,不。只有c 会被赋值。

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

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

ab 未定义

【讨论】:

【参考方案4】:

var a, b, c = ; 只定义了最后一个变量,即c。它类似于var a = , b = [], c = 0;的语法

这只是声明多个变量的简写。

【讨论】:

【参考方案5】:

使用逗号分隔变量可以更紧凑地在同一范围内定义多个变量。但是,在您的示例中,只有 c = ab 将是 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 =的主要内容,如果未能解决你的问题,请参考以下文章

从变量<C,B> 分配变量<A,B,C>?

java中变量a是double型的。怎么判断a是不是为null

C语言题目---交换两个变量(不创建临时变量)

Python 的全局变量

C语言指针变量怎么转化为普通类型变量?

C语言中如何交换两个指针变量的的值