js定时器中引用的外部函数如何传递参数

时间:2022-04-06 16:10:55

问题:比如在一个点击事件中我需要将点击事件参数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中,多个参数也一样。