2

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

(i = 1 + 2), (j = 3 + 4);

在功能上等同于

i = 1 + 2;
j = 3 + 4;

此外,据我所知,诸如 var 之类的语句不被视为运算符,而是操作数的一部分。(参见https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence

因此,如果每个操作数都被单独评估,那么为什么会

function foobar () {
    var i = 3, j = 7, z;
}

在 foobar 的范围内创建 3 个变量 - i、j 和 z?

我知道这就是实际发生的情况,但我一直想知道为什么会发生这种情况。看起来 i 应该在 foobar 的范围内,但 j 和 z 应该最终在全局范围内。

4

1 回答 1

4

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

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

于 2012-05-20T05:08:17.630 回答