Javascript clearInterval.bind()不能作为传递到addEventListener的参数使用

Javascript clearInterval.bind()不能作为传递到addEventListener的参数使用,javascript,Javascript,我想知道为什么clearInterval.bind不能作为传递给addEventListener函数的参数工作。模拟情况的简单示例 html 当我将clearInterval包围到下面这样的匿名函数中时,一切都正常工作 document.getElementById('end').addEventListener('click',function(){ clearInterval.bind(window,timer)(); // or just simple clearInter

我想知道为什么
clearInterval.bind
不能作为传递给
addEventListener
函数的参数工作。模拟情况的简单示例

html

当我将
clearInterval
包围到下面这样的匿名函数中时,一切都正常工作

document.getElementById('end').addEventListener('click',function(){
    clearInterval.bind(window,timer)();
    // or just simple clearInterval(timer)
},false);

为什么它不想工作?我错过了什么吗?

计时器的值被传递到
bind
。代码运行时,该值为未定义(因为您尚未单击开始)。因此,在新函数中绑定
未定义的


在JavaScript中,变量不是通过引用传递的。

计时器的值被传递到
bind
。代码运行时,该值为未定义(因为您尚未单击开始)。因此,在新函数中绑定
未定义的


变量在JavaScript中不是通过引用传递的。

@Quentin,你太快了:)@Quentin,你太快了:)
var timer;
var i = 0;
document.getElementById('start')
    .addEventListener('click',function(){
       timer = setInterval(function(){
         document.getElementById('app').innerHTML = i
         i ++
    }, 1000)
},false)


document.getElementById('end')
    .addEventListener('click',clearInterval.bind(window,timer),false);
document.getElementById('end').addEventListener('click',function(){
    clearInterval.bind(window,timer)();
    // or just simple clearInterval(timer)
},false);