問題:比如在一個點選事件中我需要將點選事件引數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中,多個引數也一樣。