问一个关于JS的定义变量的问题
两种变量,一种是全局变量,一种是局部变量。例如window.onload=function(){vara=10;varoInput=document.getElement...
两种变量,一种是全局变量,一种是局部变量。
例如
window.onload=function()
{
var a=10;
var oInput=document.getElementById('btn');
oInput.onclick=function()
{
var timer=null;
var b=5;
timer=setInterval(function(){
var c=b--;
var d=a--;
alert(c)
alert(d)
if(c==0||d==0)
{
clearInterval(timer)
}
},30)
}
}
<input id="btn" type="button" value="点击观察" />
我把它修改一下,改为以下代码
window.onload=function()
{
var a=10;
var oInput=document.getElementById('btn');
oInput.onclick=function()
{
var timer=null;
timer=setInterval(function(){
var b=5;
var c=b--;
var d=a--;
alert(c)
alert(d)
if(c==0||d==0)
{
clearInterval(timer)
}
},30)
}
}
<input id="btn" type="button" value="点击观察" />
两条代码,唯一不同就是b的位置,结果也是不同的。
问题:第一条代码的c会随着点击的次数的增多,值不断下降,在c==0的时候关闭定时器。而第二条代码的c,无论点击多少次,它的值都不会变化,在d==0的时候才关闭定时器。请问产生这种情况的根本原因是什么?两种定义方式的差别和影响又是什么? 展开
例如
window.onload=function()
{
var a=10;
var oInput=document.getElementById('btn');
oInput.onclick=function()
{
var timer=null;
var b=5;
timer=setInterval(function(){
var c=b--;
var d=a--;
alert(c)
alert(d)
if(c==0||d==0)
{
clearInterval(timer)
}
},30)
}
}
<input id="btn" type="button" value="点击观察" />
我把它修改一下,改为以下代码
window.onload=function()
{
var a=10;
var oInput=document.getElementById('btn');
oInput.onclick=function()
{
var timer=null;
timer=setInterval(function(){
var b=5;
var c=b--;
var d=a--;
alert(c)
alert(d)
if(c==0||d==0)
{
clearInterval(timer)
}
},30)
}
}
<input id="btn" type="button" value="点击观察" />
两条代码,唯一不同就是b的位置,结果也是不同的。
问题:第一条代码的c会随着点击的次数的增多,值不断下降,在c==0的时候关闭定时器。而第二条代码的c,无论点击多少次,它的值都不会变化,在d==0的时候才关闭定时器。请问产生这种情况的根本原因是什么?两种定义方式的差别和影响又是什么? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询