[Javascript] 匿名函式後面的 .call(this) 是什麼意思?




剛剛在 javascript.tw 看到一個網友問了一個問題:

為什麼下面的程式的輸出結果都是: 4! 而不是 1, 2, 3? 怎麼讓它輸出 1, 2, 3?

主要的原因應該是使用 SetTimeout( function(){}, 0) 的方式來呼叫函式,該函式會被放到 queue 裡頭,等到一些事件被處理完之後,他才會被叫起來執行。

所以整個迴圈會先被跑完,才依序執行 Queue 裡面的 anonymous 函式。

有個網友建議的解決方式是:

在 anonymous function 後面加入 .call(this) 是什麼意思呢?

其實他的用意只是要即時呼叫(immediately invoke)該函式。

所以使用下面的方法,也可以解決同樣的問題。

不過這樣的解決方法,就失掉了把 function 放到 Queue 裡面等候呼叫的原意了。

參考資料:




Be the first to comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.