function foo(){
function bar(a){
i = 3;
console.log(i)
}
for(var i = 0;i<10;i++){
bar(i);
}
}
foo()//结果是死循环
下面这段代码只是将foo的参数改了一下
function foo(){
function bar(i){
i = 3;
console.log(i)
}
for(var i = 0;i<10;i++){
bar(i);
}
}
foo()//结果是死10个3想不明白??????
2 回答
互换的青春
TA贡献1797条经验 获得超6个赞
第一个代码中bar函数内没有声明i变量,在bar函数内使用的i是外层作用域中的循环变量i,循环变量每次都重新赋值为3当然死循环了。
只要用var在bar函数内声明自己的i变量就可以了,
var i = 3;
第二个代码中bar函数的参数名改成了i,就等同用var在bar函数内声明了自己的i变量
添加回答
举报
0/150
提交
取消