逗号运算符计算每个以逗号分隔的操作数(并返回最后一个操作数的值)。
(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?
我知道实际发生了什么,但我一直想知道为什么会发生这种情况。似乎我应该在foobar的范围内,但j和z应该在全球范围内结束。
答案 0 :(得分:4)
var
语句中使用的逗号实际上不是逗号运算符。
类似地,用于在函数调用中分隔参数的逗号也不是逗号运算符。