逗号运算符计算每个逗号分隔的操作数(并返回最后一个操作数的值)。
(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 应该在全局范围内。
最佳答案
var
语句中使用的逗号实际上并不是逗号运算符。
同样,在函数调用中用于分隔参数的逗号也不是逗号运算符。
关于Javascript:逗号运算符、var 和作用域 - 为什么它会这样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670915/