課程
/前端開發(fā)
/jQuery
/jQuery源碼解析(架構(gòu)與依賴模塊)
為什么要用setTimeout,這樣寫也可以arguments.callee(List,callback),是保存變量嗎
2016-10-05
源自:jQuery源碼解析(架構(gòu)與依賴模塊) 3-2
正在回答
是用來保護callback被回收,當函數(shù)執(zhí)行完了變量就會被回收,用了setTimeout等25ms后才會被回收
不是。setTimeout只是延時,沒有其它任何功能。而里面的callback函數(shù)是通過閉包來傳值的。
function Aaron(List, callback) {
? (function() {
? ? var task;
? ? task = List.shift();
? ? ? task(); //執(zhí)行函數(shù)
? ??
? ? if (List.length > 0) { //遞歸分解
? ? ? arguments.callee(List);
? ? } else {
? ? ? callback()
? ? }
? }())
}
我測試了,不加setTimeout也可以執(zhí)行,不過最后顯示的執(zhí)行順序如下:
a
b
c
callback
callbacksA
callbacksB
所以我猜測這個setTimeout只是為了演示而加的,并不是一定要加
我嘗試了 ,不加setTimeout,程序會曝出 callback 沒有定義。想想也是,callee 的時候,只傳遞了,一個參數(shù)。
那為什么,callback 在?setTimeout 就可以保留了。因為有延遲,所有,第一次調(diào)用的局部變量,還是存在的。
所以可以調(diào)用?
yuqingzhijie3596863
我只知道setTimeout()是一個只執(zhí)行一次的延遲函數(shù),而setInterval()是一個可以執(zhí)行多次的延遲函數(shù)。
同學(xué),你給取的信息有限,我有些不知道你說的是什么問題。
還有,我不知道callee()函數(shù)是干嘛的
舉報
由淺入深地剖析jQuery庫的設(shè)計與實現(xiàn),揭開框架背后的秘密
2 回答為什么一定要用call方法?
6 回答;(function(){})() 為什么要加 ; 分號
4 回答為什么要使用一個fn,而不直接在prototype上面搞
1 回答這里為什么要加個if判斷
1 回答為什么要做this是否為當前實例的判斷?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2021-03-18
是用來保護callback被回收,當函數(shù)執(zhí)行完了變量就會被回收,用了setTimeout等25ms后才會被回收
2019-07-01
不是。setTimeout只是延時,沒有其它任何功能。而里面的callback函數(shù)是通過閉包來傳值的。
2017-05-15
function Aaron(List, callback) {
? (function() {
? ? var task;
? ? task = List.shift();
? ? ? task(); //執(zhí)行函數(shù)
? ??
? ? if (List.length > 0) { //遞歸分解
? ? ? arguments.callee(List);
? ? } else {
? ? ? callback()
? ? }
? }())
}
我測試了,不加setTimeout也可以執(zhí)行,不過最后顯示的執(zhí)行順序如下:
a
b
c
callback
callbacksA
callbacksB
所以我猜測這個setTimeout只是為了演示而加的,并不是一定要加
2016-10-24
我嘗試了 ,不加setTimeout,程序會曝出 callback 沒有定義。想想也是,callee 的時候,只傳遞了,一個參數(shù)。
那為什么,callback 在?setTimeout 就可以保留了。因為有延遲,所有,第一次調(diào)用的局部變量,還是存在的。
所以可以調(diào)用?
2016-10-14
我只知道setTimeout()是一個只執(zhí)行一次的延遲函數(shù),而setInterval()是一個可以執(zhí)行多次的延遲函數(shù)。
同學(xué),你給取的信息有限,我有些不知道你說的是什么問題。
還有,我不知道callee()函數(shù)是干嘛的