为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript作用域和传参的问题

JavaScript作用域和传参的问题

守着星空守着你 2018-07-24 10:18:34
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变量


查看完整回答
反对 回复 2018-07-28
  • 2 回答
  • 0 关注
  • 745 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信