扫码下载编程狮APP
var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10 a[6] // function(){ console.log(i); }
我不理解的是,这里为什么不是
a[6] = function () { console.log(6); };
因为 i 的作用域 是 window,每循环一次,都会重新赋值。 给你改写一个了一个demo,用外套function锁定作用域,可以实现你要的效果
var a = []; for (var i = 0; i < 10; i++) { a[i] = (function (i) { return function(){ console.log(i); } })(i); }
运行结果:
> a[6]; function(){ console.log(i); } >a[6](); 6
好慢呀,空空如也,半天不来大神解决,大佬在哪啦
刚学习程序,过来学习学习!!!!...
快来解决啦!快来!快来! 快来 快来
闭包
联系方式:
扫描二维码
下载编程狮App
扫码关注 领资料包