日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

javascript - 初學(xué)閉包,不太明白,求大神指教

瀏覽:267日期:2023-05-14 11:07:45

問(wèn)題描述

function box() { var arr = []; for (var i = 0; i < 5; i++) {arr[i] = function () { return i;} } return arr;}var b = box();for (var i = 0; i < 5; i++) { alert(b[i]);}

當(dāng)box()執(zhí)行完之后,為什么arr[0]到arr[4]里面的值都是function () { return i;}為什么不依次是:function () {return 0;},function () {return 1;}。。。

問(wèn)題解答

回答1:

因?yàn)殚]包只能取得包含函數(shù)中任何變量的最后一個(gè)值,在這里指的就是i這個(gè)變量,box()函數(shù)執(zhí)行后返回的是一個(gè)函數(shù)數(shù)組,數(shù)組中的每一個(gè)i引用的都是同一個(gè)變量i,注意box()返回的是一個(gè)函數(shù)!所以里面的{return i}這只是函數(shù)內(nèi)的一個(gè)聲明,還沒(méi)有執(zhí)行呀,所以當(dāng)然保持{return i}不變。因?yàn)橐玫氖峭粋€(gè)外部i,所以當(dāng)box()函數(shù)返回后,外部變量i的值是5,此時(shí)每一個(gè)return中都引用著保存變量i的同一個(gè)變量對(duì)象,所以如果最后執(zhí)行了內(nèi)部的arr[]中的函數(shù),最后每個(gè)函數(shù)內(nèi)部的i的值都是5.

//執(zhí)行內(nèi)部返回的arr中的函數(shù),當(dāng)然box()[1]()、box()[2]()、box()[3]()...都返回5; function box() {var arr = [];for (var i = 0; i < 5; i++) { arr[i] = function () {return i; }}return arr; } box()[1](); //執(zhí)行后返回5//不執(zhí)行內(nèi)部函數(shù),僅僅是box()的話,當(dāng)然只返回一個(gè)function咯 function box() {var arr = [];for (var i = 0; i < 5; i++) { arr[i] = function () {return i; }}return arr; } box(); //[function, function, function, function, function]回答2:

因?yàn)?b>關(guān)聯(lián)到閉包的作用域鏈?zhǔn)?活動(dòng)的'. 并且他們共享變量 i , 并不是對(duì)每個(gè)綁定的變量的值賦值自己?jiǎn)为?dú)的一份. 他們只是引用 i,并不會(huì)保存 i 每個(gè)階段的值.

參考書(shū)籍: JavaScript 權(quán)威指南 8.6 小節(jié).

回答3:

function box() { var arr = []; for (var i = 0; i < 5; i++) {arr[i] = function () { return i;}(); }; return arr;}這樣就是了回答4:

function box() { var arr = []; for (var i = 0; i < 5; i++) {arr[i] = (function () { return i;})(i) } return arr; }var b = box();for (var i = 0; i < 5; i++) { alert(b[i]); }回答5:

示例中for循環(huán)里的function只是賦值,并沒(méi)有執(zhí)行,所以當(dāng)數(shù)組中函數(shù)執(zhí)行時(shí)才去獲取i的值,這時(shí)候i只有循環(huán)結(jié)束的值,樓上沒(méi)有用到閉包,只是用一個(gè)立即執(zhí)行的匿名函數(shù)得到了每個(gè)循環(huán)的i的值;方法:1.用ES6 let替代varfunction box() {

var arr = []; for (let i = 0; i < 5; i++) {arr[i] = function () { return i;} } return arr;}var b = box();for (var i = 0; i < 5; i++) { alert(b[i]());}

2.采用閉包function box() {

var arr = []; for (var i = 0; i < 5; i++) {arr[i] = function (x) { return function(){return x; };}(i); } return arr;}var b = box();for (var i = 0; i < 5; i++) { alert(b[i]());}回答6:

。“閉包” 一詞來(lái)源于以下兩者的結(jié)合:要執(zhí)行的代碼塊(由于自由變量被包含在代碼塊中,這些自由變量以及它們引用的對(duì)象沒(méi)有被釋放)和為自由變量提供綁定的計(jì)算環(huán)境(作用域) ---百度百科 意思就是

function () {return i; }

這個(gè)就是一個(gè)代碼塊,作用僅僅是他引用了i,這樣持有i就會(huì)導(dǎo)致i不會(huì)被釋放掉,我們保存的只是這個(gè)代碼塊,這個(gè)代碼塊不運(yùn)行之前,他根本不知道i是什么東西,就有他運(yùn)行的時(shí)候,他才會(huì)去找i,所以你可以把你的arr都輸出一下,應(yīng)該輸出的全是5

回答7:

// arr的元素均是下面這個(gè)函數(shù) function(){ return i; }

調(diào)用的時(shí)候才計(jì)算 i 是什么。

而在調(diào)用這些函數(shù)的時(shí)候,for 已經(jīng)結(jié)束,因此取 i 的時(shí)候值是 5

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品久久久久av蜜臀| 国产亚洲第一伦理第一区| 欧美激情久久久久久久久久久| 亚洲美女久久| 久久国产人妖系列| 国产精品毛片久久| 亚洲大片在线| 日韩精品一区二区三区中文在线| 欧美日韩一区二区综合| 日本免费一区二区三区四区| 香蕉成人av| 深夜福利亚洲| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 石原莉奈在线亚洲二区| 国产精品视频3p| 精品国模一区二区三区| 国产一区二区高清| 三级亚洲高清视频| 国产欧美69| 久久久久国产精品一区二区| 国产色综合网| 尤物精品在线| 欧美交a欧美精品喷水| 999久久久国产精品| 日韩精品福利一区二区三区| 日韩欧美一区二区三区在线视频| 桃色一区二区| 国产精品主播在线观看| 亚洲成人一区| 久久午夜影院| 亚洲一区日韩| 日本一区二区三区中文字幕| 精品国产第一福利网站| 亚洲精选成人| 国产精品亚洲一区二区三区在线观看| 91日韩欧美| 日韩中文字幕| 亚洲免费成人| 色黄视频在线观看| 久久精品国产99国产精品| 免费观看不卡av| 国产aⅴ精品一区二区三区久久| 久久久久久夜| 欧美私人啪啪vps| 欧美资源在线| 久久国产直播| 福利一区二区| 欧美国产亚洲精品| 日韩中文字幕在线一区| 99国产精品视频免费观看一公开 | 国产精品99一区二区三| 蜜臀久久久久久久| 欧美日韩国产一区二区三区不卡| 国产精品久久久久久久久久10秀 | 视频一区二区不卡| 久久久天天操| 97视频热人人精品免费| 国产欧美日韩一区二区三区四区 | 视频一区二区国产| 亚洲综合电影| 免费一区二区三区在线视频| 亚洲影视一区| 亚洲视频播放| 1024精品久久久久久久久| 九九精品调教| 中文在线免费视频| 国产区精品区| 久久精品99久久久| 日韩高清在线不卡| 欧美一区网站| 国产精品久久777777毛茸茸| 国产精品入口久久| 国产精一区二区| 国产精品久久久久毛片大屁完整版 | 国产黄色精品| 麻豆久久一区| 久久中文字幕导航| 精品一区二区三区免费看| 国产激情综合| 久久天堂影院| 国产美女高潮在线| 久久天堂精品| 亚洲香蕉网站| 国产亚洲综合精品| 日韩精品一二三| 婷婷综合福利| 国产精品毛片久久久| 美女毛片一区二区三区四区最新中文字幕亚洲| 日韩精品成人| 久久伊人国产| 韩国女主播一区二区三区| 国产成人精选| 日韩在线观看不卡| 亚洲一区国产| 亚洲人成高清| 91偷拍一区二区三区精品| 一区二区三区四区日本视频| 日本不卡免费高清视频在线| 水蜜桃精品av一区二区| 91亚洲人成网污www| 欧美日韩少妇| 日韩va亚洲va欧美va久久| 久久精品人人| 亚洲精品一级二级| 美女黄网久久| 久久超级碰碰| 久久久久免费av| 香蕉久久久久久| 国产91欧美| 噜噜噜躁狠狠躁狠狠精品视频| 婷婷色综合网| 日韩在线视频一区二区三区| 精品香蕉视频| 亚洲一区二区三区高清| 国产私拍福利精品视频二区| 裤袜国产欧美精品一区| 91久久中文| 日韩激情av在线| 国产专区精品| 国产精品毛片一区二区三区| 国产日韩精品视频一区二区三区| 日韩精品三级| 欧美少妇精品| 亚洲精品国产精品粉嫩| 成人午夜在线| 中文字幕免费一区二区| 国内精品美女在线观看| 日韩视频一区二区三区在线播放免费观看| 久久久久国产精品一区二区| 婷婷综合国产| 亚洲韩日在线| 精品美女在线视频| 视频一区在线播放| 久久免费影院| 亚州av一区| 九色精品91| 久草精品视频| 亚洲精品国产精品粉嫩| 精品欧美一区二区三区在线观看| 亚洲福利专区| 久久精品伊人| 日韩欧美中文字幕电影| 久久久一二三| 欧美国产三级| 三级一区在线视频先锋| 黑人精品一区| 欧美亚洲tv| 每日更新成人在线视频| 久久九九99| 国产一卡不卡| 久久九九精品| 久久精品网址| 中文日韩欧美| 久久久久免费av| 亚洲毛片视频| 日韩啪啪电影网| 欧美日韩国产精品一区二区亚洲| 免费观看在线综合| 国内精品福利| 国产精品.xx视频.xxtv| 狠狠久久伊人中文字幕| 亚洲欧洲日韩| 精品三级av| 日韩一区免费| 国产精品久久久久久久久妇女| 亚洲成人va| 日韩和欧美一区二区三区| 久久视频一区| 国产精品观看| 国产一区二区三区四区五区传媒| 粉嫩av一区二区三区四区五区| 国产精品麻豆成人av电影艾秋| 久久的色偷偷| 欧美日韩国产高清| 久久99久久人婷婷精品综合| 麻豆精品久久久| 在线精品亚洲| 日韩黄色大片网站| 国产精品成人自拍| 日本少妇一区二区| 男人天堂欧美日韩| 91亚洲国产成人久久精品| 你懂的国产精品永久在线| 久久99伊人| 三级欧美在线一区| 国产精品v一区二区三区| 国产精品天天看天天狠| 日韩.com| 久久影院午夜精品| 久久精品国产999大香线蕉| 国产精品一区二区三区av| 国产不卡av一区二区| 国产精品**亚洲精品| 在线国产一区二区| 国产传媒在线| 日韩av一区二区在线影视| 亚洲精品在线观看91| 国产一区二区三区精品在线观看| 国产精品毛片| 欧美激情视频一区二区三区免费 |