亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么要用setTimeout

為什么要用setTimeout,這樣寫也可以arguments.callee(List,callback),是保存變量嗎

正在回答

5 回答

是用來保護callback被回收,當函數執行完了變量就會被回收,用了setTimeout等25ms后才會被回收

1 回復 有任何疑惑可以回復我~

不是。setTimeout只是延時,沒有其它任何功能。而里面的callback函數是通過閉包來傳值的。

0 回復 有任何疑惑可以回復我~

function Aaron(List, callback) {

? (function() {

? ? var task;

? ? task = List.shift();

? ? ? task(); //執行函數

? ??

? ? if (List.length > 0) { //遞歸分解

? ? ? arguments.callee(List);

? ? } else {

? ? ? callback()

? ? }

? }())

}

我測試了,不加setTimeout也可以執行,不過最后顯示的執行順序如下:

a

b

c

callback

callbacksA

callbacksB

所以我猜測這個setTimeout只是為了演示而加的,并不是一定要加

0 回復 有任何疑惑可以回復我~

我嘗試了 ,不加setTimeout,程序會曝出 callback 沒有定義。想想也是,callee 的時候,只傳遞了,一個參數。

那為什么,callback 在?setTimeout 就可以保留了。因為有延遲,所有,第一次調用的局部變量,還是存在的。

所以可以調用?

0 回復 有任何疑惑可以回復我~
#1

yuqingzhijie3596863

怎么可能,你直接(func())()就可以了
2017-12-04 回復 有任何疑惑可以回復我~

我只知道setTimeout()是一個只執行一次的延遲函數,而setInterval()是一個可以執行多次的延遲函數。

同學,你給取的信息有限,我有些不知道你說的是什么問題。

還有,我不知道callee()函數是干嘛的

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么要用setTimeout

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號