我在執行一些技術債務時遇到了這個問題。什麼是變量foo
的範圍?它真的「已經定義」了嗎?是一個for循環範圍獨特
function fn(){
for (var i = 0; i < m.length; i++) {
if(condition)
for (var j = 0; j < m.length; j++) {
var foo = "bar";
}
else
var foo = "fubar"
}
}
更新:問題是關於在一個條件塊內定義的變量的範圍。由於這不是嵌套在函數/閉包中,因此沒有唯一的範圍。
這裏是爲了說明一個片段:
var x = "foo",
a = [];
for(var i=0;i<10;i++){
var x = {value:1+i};
a.push(x)
}
document.write("<pre>" +
x.value + "\n" +
JSON.stringify(a,null," ") +
"</pre>"
);
我正在尋找的確切答案,特別是塊與功能範圍。 – Shanimal