js循环中闭包的变量访问问题
var str = "abcdefgabcdefg"
for(var i = 0;i<str.length;i++){
(function(i){
var str = str;
console.log(str)
})(i)
}
//-->全部都是undefinded
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有个答案有错误,这里的IIFE并不会隔断作用域链,相反会延长作用域链,IIFE也同时拥有对上级作用域的访问权限。
至于为什么undefined,是因为var str = str;语句中。str变量在javascript引擎解析被提升(hosting)到当前作用域的顶端
等同
这里有篇详细的文章。
javascript变量提升
你的代码相当于
所以这种情况下不要和外部变量同名