掃碼下載編程獅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,每循環(huán)一次,都會重新賦值。 給你改寫一個了一個demo,用外套function鎖定作用域,可以實現(xiàn)你要的效果
var a = []; for (var i = 0; i < 10; i++) { a[i] = (function (i) { return function(){ console.log(i); } })(i); }
運行結(jié)果:
> a[6]; function(){ console.log(i); } >a[6](); 6
好慢呀,空空如也,半天不來大神解決,大佬在哪啦
剛學習程序,過來學習學習!!!!...
快來解決啦!快來!快來! 快來 快來
閉包
下載App
關(guān)注公眾號
Copyright©2023 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
聯(lián)系方式:
掃描二維碼
下載編程獅App
掃碼關(guān)注 領(lǐng)資料包