![](/img/trans.png)
[英]Confusing comma operator in JavaScript. Why does it work in such manner?
[英]Javascript: Comma operator, var, and scope - why does it work the way it does?
逗號運算符計算每個逗號分隔的操作數(並返回最后一個的值)。
(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應該在全局范圍內結束。
var
語句中使用的逗號實際上不是逗號運算符。
同樣,在函數調用中用於分隔參數的逗號也不是逗號運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.