在vue開發環境下發現關於setTimeout的幾個小問題

在vue開發環境下發現關於setTimeout的幾個小問題

當我在利用Vue進行項目開發的時候總是會遇到各種問題。這些問題無關乎Vue,都是原生JavaScript的知識點,不僅感嘆原生的JavaScript真是前端之本。下面是關於setTimeout的幾個小問題:

1.setTimeout是window對象下面的一個方法,當我們使用它時需要向裡面傳遞兩個參數。第一個參數是一個函數,無論這個函數處於怎樣的上下文環境,它裡面的this永遠指向window對象。Vue實際上是一個對象,所以在Vue中使用setTimeout會發現this的指向會和大部分情況下不一樣,這是需要使用箭頭函數或者call,apply使得this重新指向Vue。

2.setTimeout是一個非同步函數,JavaScript單線程語言對於非同步函數的處理會使用event loop事件處理機制,事件流中的同步事件會影響延遲執行的setTimeout中的代碼塊。需要去了解同步事件的執行,事件觸發肯定不是同步的。

3.clearTimeout會取消setTimeout中代碼塊的執行,與第一點不同的是,clearTimeout竟然與當前上下文環境中的this一致,令人震驚。回答:一個是在回調函數一個是傳參兩者不一樣。更加令人震驚,想要去琢磨琢磨回調函數去。

<--純粹開發筆記-->

推薦閱讀:

男人怎麼喝酒不傷肝?看看科技界大咖怎麼做
為什麼不把所有的介面和插頭都做成一個樣子?會不會有一天實現?
如何看待一代冰箱巨頭新飛停產?
《紙短情長》我的故事都是關於你呀
英偉達踩上壟斷爭議線的合作夥伴計劃告終,博客訴苦市場誤解善意

TAG:前端開發 | 科技 |