【发布时间】:2016-09-05 21:22:48
【问题描述】:
我在履行一些技术债务职责时遇到了这个问题。变量 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 没有嵌套在函数/闭包中,因此没有唯一的范围。
这里有一个sn-p来说明:
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>"
);
【问题讨论】:
标签: scope refactoring jshint variable-declaration technical-debt