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);