逗号运算符计算每个逗号分隔的操作数(并返回最后一个的值)。
(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 应该最终在全局范围内。