什么是閉包? 有什么作用?
一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個(gè)函數(shù))顾孽,因而這些變量也是該表達(dá)式的一部分祝钢。閉包的特點(diǎn):
- 作為一個(gè)函數(shù)變量的一個(gè)引用,當(dāng)函數(shù)返回時(shí)若厚,其處于激活狀態(tài)拦英。
- 一個(gè)閉包就是當(dāng)一個(gè)函數(shù)返回時(shí),一個(gè)沒有釋放資源的棧區(qū)盹沈。
作用:可以通過閉包龄章,讓外部訪問函數(shù)體內(nèi)變量吃谣。
setTimeout 0 有什么作用
Paste_Image.png
作用:改變執(zhí)行順序
下面的代碼輸出多少?修改代碼讓fnArr[i]()
輸出 i做裙。使用兩種以上的方法
Paste_Image.png
代碼輸出10
第一種:
Paste_Image.png
第二種:
Paste_Image.png
使用閉包封裝一個(gè)汽車對(duì)象岗憋,可以通過如下方式獲取汽車狀態(tài)
Paste_Image.png
Paste_Image.png
寫一個(gè)函數(shù)使用setTimeout模擬setInterval的功能
Paste_Image.png
寫一個(gè)函數(shù),計(jì)算setTimeout平均[備注:新加]最小時(shí)間粒度
Paste_Image.png
下面這段代碼輸出結(jié)果是? 為什么?
Paste_Image.png
Paste_Image.png
下面這段代碼輸出結(jié)果是? 為什么?
Paste_Image.png
會(huì)停留在
while(flag){}
锚贱,一直循環(huán)仔戈。因?yàn)閟etTimeout(0)語句放在最后執(zhí)行,而flag初始值為true拧廊,while循環(huán)一直執(zhí)行监徘。
下面這段代碼輸出?如何輸出delayer: 0, delayer:1...(使用閉包來實(shí)現(xiàn))
Paste_Image.png
輸出:
Paste_Image.png
因?yàn)閟etTimeout(0)語句最后執(zhí)行吧碾,所以先執(zhí)行循環(huán)打印凰盔,而i在setTimeout中未定義,所以獲取for循環(huán)執(zhí)行完后的i倦春,此時(shí)i=5蝗羊;循環(huán)了5次飘蚯,所以打印5次输玷。
修改:
Paste_Image.png