問題:比如在一個點選事件中我需要將點選事件引數event傳入到定時器中,如果只是單純的在setTimeout(timer(e),1000)中寫上括弧e,則該定時器不會等到1s才執行,而是會立即執行。那如何解決呢?
解決: 以setTimeout為例
1.先在外部定義一個函式,函式返回的是一個函式,裡面是你真正要執行的程式碼
function timer(e) {
return function code() {
console.log('這裡輸出的是你傳遞過來的引數', e);
}
}
2.然後在比如點選事件中傳入event引數
window.addEventListener('click', event => {
setTimeout(timer(event), 1000);
})
這樣就可以等待1s後執行timer函式,並把event引數傳入到timer中,多個引數也一樣。