我在执行一些技术债务时遇到了这个问题。什么是变量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