JavaScript作用域和传参的问题

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想不明白??????


守着星空守着你
浏览 746回答 2
2回答

互换的青春

第一个代码中bar函数内没有声明i变量,在bar函数内使用的i是外层作用域中的循环变量i,循环变量每次都重新赋值为3当然死循环了。只要用var在bar函数内声明自己的i变量就可以了,var i = 3;第二个代码中bar函数的参数名改成了i,就等同用var在bar函数内声明了自己的i变量
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript