Javascript:逗号运算符,var和范围 - 为什么它以它的方式工作?

时间:2012-05-20 05:05:28

标签: javascript scope operator-precedence

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

(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应该在全球范围内结束。

1 个答案:

答案 0 :(得分:4)

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

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