最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的評論 (共 條)

分享到微博請遵守國家法律
嘉定区| 漳州市| 松原市| 景谷| 通州市| 金阳县| 蒙山县| 台东县| 西华县| 卫辉市| 会泽县| 翼城县| 凤凰县| 鹤庆县| 上饶县| 正阳县| 顺义区| 弋阳县| 莲花县| 香港| 巩留县| 安陆市| 隆化县| 平湖市| 莱阳市| 烟台市| 云霄县| 太保市| 喀喇沁旗| 梁山县| 宣恩县| 聂拉木县| 兴化市| 方山县| 张北县| 新兴县| 阳城县| 宝应县| 明溪县| 怀远县| 北票市|