Javascript:逗号运算符、变量和作用域-为什么它是这样工作的?

Javascript:逗号运算符、变量和作用域-为什么它是这样工作的?,javascript,scope,operator-precedence,Javascript,Scope,Operator Precedence,逗号运算符计算每个以逗号分隔的操作数,并返回最后一个操作数的值 (i = 1 + 2), (j = 3 + 4); 在功能上等同于 i = 1 + 2; j = 3 + 4; 此外,据我所知,语句(如var)不被视为运算符,而是操作数的一部分。看 那么,如果每个操作数都要单独求值,那么为什么要这样做呢 function foobar () { var i = 3, j = 7, z; } 在foobar的作用域中创建3个变量-i、j和z 我知道这就是实际发生的事情,但我想知道为什么

逗号运算符计算每个以逗号分隔的操作数,并返回最后一个操作数的值

(i = 1 + 2), (j = 3 + 4);
在功能上等同于

i = 1 + 2;
j = 3 + 4;
此外,据我所知,语句(如var)不被视为运算符,而是操作数的一部分。看

那么,如果每个操作数都要单独求值,那么为什么要这样做呢

function foobar () {
    var i = 3, j = 7, z;
}
在foobar的作用域中创建3个变量-i、j和z

我知道这就是实际发生的事情,但我想知道为什么会发生这样的事情。看起来我应该在foobar的作用域中,但是j和z应该在全局作用域中结束。

var语句中使用的逗号实际上不是逗号运算符

类似地,在函数调用中用于分隔参数的逗号也不是逗号运算符。

var语句中使用的逗号实际上不是逗号运算符


类似地,在函数调用中用于分隔参数的逗号也不是逗号运算符。

有关于此声明的参考资料吗?我看不到它实际上是在,啊,我确实看到了,但是,在例子的文本中。我猜这是一个微小的差异,这使得它几乎是相同的,而不是相同的…引用:一个var语句有逗号ECMAScript spec,对这个声明有任何引用吗?我看不到它实际上是在,啊,我确实看到了,但是,在例子的文本中。我猜这是一个微小的差异,这使得它几乎相同,而不是相同的…引用:var语句具有逗号ECMAScript规范