国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Vue從零開始總結(jié)10

2021-04-13 09:21 作者:忘魂兒  | 我要投稿

這次不同以往,有個(gè)蠻有趣的東西叫做閉包,

閉包結(jié)構(gòu):(function(替換函數(shù)內(nèi)變量的新變量){

? ? ? ? ? ? ?語句塊

})(函數(shù)內(nèi)變量)

下面我們先來看看如果沒有閉包會(huì)造成怎樣的后果吧

@一。當(dāng)我們用有缺陷的var來定義變量時(shí)

html中

<button>第一</button>
<button>第二</button>
<button>第三</button>
<button>第四</button>
<button>第五</button>

js中

let btns=document.getElementsByTagName('button');
for (let i=0;i<btns.length;i++)
{
? ? ? ? ? ? ? btns[i].addEventListener('click',function (){
? ? ? ? ? ? ? ? ? console.log('第' + i?+ '個(gè)按鈕被點(diǎn)擊');
? ? ? ? ? ? ? })
}


當(dāng)有閉包存在時(shí)

html中

<button>第一</button>
<button>第二</button>
<button>第三</button>
<button>第四</button>
<button>第五</button>

js中

let btns=document.getElementsByTagName('button');
for (var i=0;i<btns.length;i++)
{
? ?(function (num)
? ? ? ? ? ?{
? ? ? ? ? ? ? btns[num].addEventListener('click',function (){
? ? ? ? ? ? ? ? ? console.log('第' + num + '個(gè)按鈕被點(diǎn)擊');
? ? ? ? ? ? ? })
? ? ? ? ? ?}

? ?)(i)//此處閉包的i用num進(jìn)行了替換
}



@二。當(dāng)我們用let來定義變量時(shí)

let btns=document.getElementsByTagName('button');

for (let i=0;i<btns.length;i++)
{
? ?btns[i].addEventListener('click',function (){
? ? ? ?console.log('第' + i + '個(gè)按鈕被點(diǎn)擊');
? ?})
}

就不會(huì)出現(xiàn)var的問題

同樣加入閉包

let btns=document.getElementsByTagName('button');
for (let i=0;i<btns.length;i++)
{
? ?(function (num)
? ? ? ? ? ?{
? ? ? ? ? ? ? btns[num].addEventListener('click',function (){
? ? ? ? ? ? ? ? ? console.log('第' + num + '個(gè)按鈕被點(diǎn)擊');
? ? ? ? ? ? ? })
? ? ? ? ? ?}

? ?)(i)
}

也不會(huì)出現(xiàn)問題

所以為了保險(xiǎn)起見還是寫閉包的好!

之所以這么麻煩是因?yàn)樵趀s5之前沒有if和for的塊級作用域的概念,所以必須得借助函數(shù)的作用域才行

但是在es6中開始有了這兩個(gè)概念,而且引入的let更為使用,所以一般可以直接采用第二種的第一個(gè)簡介寫法,無需寫閉包

Vue從零開始總結(jié)10的評論 (共 條)

分享到微博請遵守國家法律
万山特区| 周至县| 太仆寺旗| 连平县| 波密县| 本溪市| 青冈县| 高州市| 桦南县| 封开县| 长岭县| 蕉岭县| 安阳市| 平塘县| 高清| 丘北县| 西乌珠穆沁旗| 宁明县| 龙岩市| 萨嘎县| 丹阳市| 永泰县| 陈巴尔虎旗| 汉源县| 吴堡县| 泰兴市| 景德镇市| 黄骅市| 宝兴县| 喜德县| 望都县| 天门市| 三原县| 塔河县| 磴口县| 巴东县| 湖州市| 郧西县| 甘泉县| 中阳县| 衢州市|