window.onload = function(){
var oBtn1 = document.getElementById("btn1");
var oBtn2 = document.getElementById("btn2");
var timer = null;
oBtn1.onclick = function (){
timer = setInterval(function(){ //timer是全局变量,外部可访问
alert("1")
},1000)
};
oBtn2.onclick = function (){
clearInterval(timer);
};
}
1.在外层定义的timer是全局变量吗?
2.不在外层定义timer = null,直接在oBtn1的函数里面将定时器函数赋值给timer,后面关闭定时器也是可以的,写不写这个var timer = null是必要的吗?
如果少了var timer=null,你在第一个点击函数中的timer直接赋值没有使用var声明,所以默认是全局函数,第二个点击函数当然可以clear掉。
只是代码规范问题,最好在全局函数中使用var声明,否则容易在严格模式下出问题