在javascript中,如果在声明一个局部变量时,前面没有加var,则此局部变量会变成全局变量,基于此,在方法中写for循环的时候,记得给循环变量加上var
var i=0; //定义全局变量0
function unUserVar(){
for(i=0;i<1;i++){ //这里没有加var,所以会把之前的i覆盖掉,导致程序BUG
alert("inner i:"+i);
}
}
unUserVar();
alert(i); //显示1,而不是之前定义的0
function userVar(){
for(var j=0;j<1;j++){
alert("inner j:"+j);
}
}
userVar();
alert(j); //显示未定义
JS变量作用域陷阱
本文通过实例演示了在JavaScript中不正确使用变量声明可能导致的作用域问题。特别指出,在方法内的循环若省略了var关键字,会导致预期外的全局变量覆盖现象。
1126

被折叠的 条评论
为什么被折叠?



