第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

像這種是閉包嗎?

像這種是閉包嗎?

紅顏莎娜 2018-10-04 10:14:28
component.on('load',function(){        var s = 0;        for (var i = 0; i < 100; i++) {             setTimeout(function(){                 s+=0.01;                 draw(s);             },i*10);         }     });我理解的閉包是一個函數(shù)定義在一個函數(shù)中,這個函數(shù)內(nèi)引用有外部函數(shù)的變量,然后在外部函數(shù)的外面被執(zhí)行.但是今天看一個視頻說上面setTimeout利用了閉包,我搞不懂哪里用到閉包了,是我對閉包的理解有錯誤嗎?
查看完整描述

1 回答

?
慕俠2389804

TA貢獻1719條經(jīng)驗 獲得超6個贊

是閉包。
我再寫個更簡單版的:

var s = 1;
setTimeout(function() {
    s = s + 1;
}, 1000);

為什么是閉包呢?

從事件循環(huán)的角度來看,外部變量s原本在當前這一輪事件循環(huán)就會被銷毀的。但是現(xiàn)在它被setTimeout的回調(diào)函數(shù)引用了,而setTimeout的回調(diào)函數(shù)一定是在下一輪或者更久以后的事件循環(huán)中被調(diào)用,所以s的生命周期被延長到那個時候。這就是閉包。

你可能會說:這里并沒有函數(shù)套函數(shù)啊?是的,誰說必須要函數(shù)套函數(shù)才是閉包了?!其實只要是一個函數(shù)引用了外部作用域中的變量,使得變量的生命周期得到延長,就是閉包了。雖然上述函數(shù)沒有套在閉包里,但是它套在了全局作用域中。


查看完整回答
反對 回復 2018-11-06
  • 1 回答
  • 0 關注
  • 497 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號