av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - js閉包作用域

瀏覽:108日期:2023-04-29 13:59:19

問(wèn)題描述

為什么會(huì)輸出10 次10 push進(jìn)去的不應(yīng)該是 1 - 9嗎 這個(gè)坑求大神解答

function save_i(){ var a = []; for(var i = 0;i<10;i++){a[i] = function(){ return i;} } return a; }var c = save_i();for(var i = 0;i<10;i++){ console.log(c[i]()); //10次 10}

問(wèn)題解答

回答1:

只需要在for循環(huán)執(zhí)行時(shí),創(chuàng)建一個(gè)閉包函數(shù)將i值保存起來(lái),既可以依次輸出

function save_i(){ var a = []; for(var i = 0;i<10;i++){a[i] = function(i){ return function() {return i; };}(i); } return a;}var c = save_i();for(var i = 0;i<10;i++){ console.log(c[i]()); //已經(jīng)變?yōu)橐来屋敵鰙回答2:

在執(zhí)行點(diǎn)擊事件之前,for循環(huán)已經(jīng)執(zhí)行完,也就是最終獲取的是最后 i 的值5。 呆神:綁定 和 點(diǎn)擊 是兩個(gè)事件 點(diǎn)擊是用戶交互的時(shí)候發(fā)生 綁定在引擎編譯代碼的時(shí)候就發(fā)生了~ 宇神:這樣理解吧,你把點(diǎn)擊事件當(dāng)做一個(gè)下車事件,而火車從1-4,到4時(shí)你才能下車執(zhí)行事件,此時(shí)值為4.

之前過(guò)基礎(chǔ)看過(guò)的文章理解閉包,要求你寫過(guò)一代碼,而且接下來(lái)在自己的代碼中也能用到,除些之外,就只能死記硬背了。老派的國(guó)人喜歡讓小孩子很小的時(shí)候背東西,但是不會(huì)和他們講是什么意思,有時(shí)也講不清,寄希望于在未來(lái)的某個(gè)時(shí)刻自然而然就懂了以上如果你有一定基礎(chǔ),推薦看我寫的日志,再不懂,留言問(wèn)我http://user.qzone.qq.com/2084...

回答3:

function save_i(){ var a = []; for(var i = 0;i<10;i++){a[i] = function(i){ return i;}; } return a; }var c = save_i();for(var i = 0;i<10;i++){ console.log(c[i](i));}回答4:

a[i] = function(i){ return i;};

return的每個(gè)i都是引用了外部的同一個(gè)i 也就是10

回答5:

var fns=[];function test(){ for(var i=0;i<10;i++){(function(j){ fns.push(function(){ console.log(j);} ); })(i); }}test();for(var k=0;k<fns.length;k++){ fns[k]();}

var變量的作用域是函數(shù)作用域,不是塊級(jí)作用域

回答6:

作用域鏈在創(chuàng)建的時(shí)候就已經(jīng)生成了, c[i] = function(i){ return i; };運(yùn)行的時(shí)候當(dāng)前作用域沒(méi)有i,而上層作用域save_i()的i已經(jīng)變成10。你認(rèn)為結(jié)果是0~9,是不是你把上層作用域當(dāng)做全局了

回答7:

a[i]賦值的時(shí)候是一堆function、也就是并沒(méi)有執(zhí)行、也沒(méi)有拿到i、她的作用域也沒(méi)取到i

當(dāng)你在下面執(zhí)行的時(shí)候、這一堆function都開(kāi)始找自己作用域能取到的i、也就是循環(huán)執(zhí)行完的10

回答8:

var關(guān)鍵字聲明變量作用域?yàn)楹瘮?shù)作用域, 因此 for 循環(huán)中的 i 變量會(huì)發(fā)生變量提升。 樓主的將for循環(huán)中的哪一段改為自執(zhí)行函數(shù)就ok了。eg:function save_i(){

var a = [], i = 0;for(;i<10;i++){ a[i] = function(i){return i; }(i);}return a;

}

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲美女天堂网 | 日本a∨精品中文字幕在线 亚洲91视频 | 久久久久国产一区二区三区四区 | jdav视频在线观看免费 | 日本一卡精品视频免费 | 天天久久 | 麻豆va| 久久国产精品久久久久久久久久 | 成年人网站在线观看视频 | 9久久精品 | 精品自拍视频在线观看 | 久久久噜噜噜久久中文字幕色伊伊 | 久久这里只有精品首页 | 天天欧美 | 午夜电影网 | 欧美中文字幕一区 | 在线播放国产视频 | 国内激情av片 | 亚洲永久| 日韩欧美一级 | 懂色中文一区二区在线播放 | 日韩黄色免费 | 国产免费一区二区三区最新6 | 亚洲综合第一页 | 国产成人亚洲精品 | 国产精品久久久久久妇女6080 | 国产精成人 | 毛片免费观看 | 国产精品视频yy9299一区 | 日韩一区二区三区在线观看 | 黄色视频a级毛片 | 精品久久久久一区二区国产 | 99精品99久久久久久宅男 | 一级在线视频 | 韩日一区二区三区 | 成人欧美一区二区三区在线播放 | 国产精品久久久久久久久久免费 | 伊人二区 | 亚洲精品免费观看 | 国产精品激情 | 亚洲精品一区中文字幕乱码 |