为什么不能将window.location.reload作为第一类函数传递?

时间:2017-07-16 20:54:28

标签: javascript

为什么会这样,

setTimeout(function() { window.location.reload() }, 3000);

但这不是吗?

setTimeout(window.location.reload, 3000);

我收到以下错误:TypeError: 'reload' called on an object that does not implement interface Location.

1 个答案:

答案 0 :(得分:1)

理论上可以。当你这样传递它时,它只是函数,没有它的执行上下文(this)。由于函数(内部)使用this,因此失败。您也可以通过console.log注意到这一点。

解决方案是绑定上下文:

setTimeout(window.location.reload.bind(window.location), 3000);