我在履行一些技术债务职责时遇到了这个问题。变量的范围是什么foo
?它真的“已经定义”了吗?
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"
}
}
更新:问题是关于条件块中定义的变量的范围。由于 this 没有嵌套在函数/闭包中,因此没有唯一的范围。
这是一个片段来说明:
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>"
);