javascript赋值和值[和逗号运算符]

时间:2014-09-01 14:19:36

标签: javascript

我在Twitter上关注某人并发布了以下测验:

var a=42,b,c;

b=a++, a++;

c=(a++,a++);

console.log(a,b,c);

我用jsbin.com测试了它,结果是:
46个
42个
45

这是测试页面:sample on jsbin.com

现在我将解释我所知道的并询问我不知道的事情:

第一行:var a=42,b,c;
这很容易声明三个变量并赋值给第一个变量。

第2行:b=a++, a++;
这也很容易b等于a + 1

但我的问题#1是: 如果我们想开始一个新的声明;我们不应该用分号关闭第一个?? 我的意思是第二行很容易,如果它是这样的: B = A ++; 一个++; 但是我们怎么能用它们之间的昏迷来写呢? [这对我来说是新的,我觉得这是一个新问题]

第3行:c=(a++,a++);
现在这条线是我无法弄清楚的。它显示了一个赋值,但放入括号并将变量分隔为昏迷,这将导致45? 这是我的第二个问题:

第3行的解释是什么?

1 个答案:

答案 0 :(得分:3)

您可以查看MDN documentation:逗号运算符只是简单地计算所有表达式并返回最后一个表达式...

对于行b=a++, a++;,有两个表达式:b=a++a++。因此,这意味着第一个将a的值放入b并递增a,因为第二个只增加a。由于没有什么需要整个表达式的返回值,它的作用如下:

b = a++; // b = 42, a = 43
a++;     // a = 44

但是对于第3行,c得到了这个操作的结果,然后得到a的另外两个增量的结果,这就像:

a++;     // a = 45
c = a++; // c = 45, a = 46
相关问题