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

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

用setTimeout()調用函數

用setTimeout()調用函數

楊__羊羊 2019-06-03 16:14:37
用setTimeout()調用函數簡單地說.。為什么setTimeout('playNote('+currentaudio.id+', '+noteTime+')', delay);很好地工作,在指定的延遲之后調用函數,但是setTimeout(playNote(currentaudio.id,noteTime), delay);同時調用函數playNote?(這些setTimeout()在for循環中)或者,如果我的解釋太難理解,這兩種功能有什么區別?
查看完整描述

4 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

它可能有助于理解javascript何時執行代碼,以及何時等待執行:

let foo2 = function foo(bar=baz()){ console.log(bar); return bar()}

  • javascript執行的第一件事是函數構造函數,并創建一個函數對象。類的函數關鍵字語法。

    =>

    語法,您將得到類似的(

    但不完全相同

    )結果。
  • 然后將剛剛創建的函數分配給變量。

    foo2

  • 此時,沒有運行任何其他函數:沒有調用其他函數(兩者都沒有)。

    baz

    也不

    bar

    ,沒有價值觀等。但是,在函數中已經檢查了語法。
  • 如果你通過

    foo

    foo2

    setTimeout

    然后在超時之后,它將調用該函數,就像您這樣做一樣。

    foo()

    ..(注意,沒有任何arg傳遞給

    foo

    ..這是因為

    setTimeout

    在默認情況下不會傳遞參數,

    雖然它可以

    ,但這些參數是在超時到期之前計算的,而不是在超時到期時計算的。)
  • 調用foo后,將計算默認參數。因為我們不傳遞參數就調用foo,所以默認的

    bar

    被評估。(如果我們通過一個論點,這種情況就不會發生)
  • 的默認參數計算時,

    bar

    ,第一個javascript查找一個名為

    baz

    ..如果它找到了一個函數,那么它就會嘗試調用它作為一個函數。如果該方法有效,則將返回值保存到

    bar.

  • 現在評估該職能的主體:
  • JavaScript查找變量

    bar

    然后用結果調用sole e.log。這不叫酒吧。但是,如果它被稱為

    bar()

    ,然后

    bar

    的返回值。

    bar()

    會被傳遞給

    console.log

    相反。注意,javascript獲取它正在調用的函數的參數值。

    以前

    它調用該函數,甚至在它查找該函數之前,查看它是否存在,是否確實是一個函數。
  • JavaScript再次查找

    bar

    ,然后嘗試將其稱為函數。的結果返回值。

    foo()

因此,函數體和默認參數不是立即調用的,但是其他的都是。類似地,如果執行函數調用(即()),則該函數也會立即執行。但是,不需要調用函數。去掉括號將允許您傳遞該函數并稍后調用它。但是,這樣做的缺點是不能指定要調用函數的參數。此外,javascript在函數括號內執行所有操作。以前它調用函數或查找存儲在其中的變量。


查看完整回答
反對 回復 2019-06-03
  • 4 回答
  • 0 關注
  • 1532 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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