问一个关于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的时候才关闭定时器。请问产生这种情况的根本原因是什么?两种定义方式的差别和影响又是什么?
展开
 我来答
昊阎
2016-07-27 · TA获得超过111个赞
知道小有建树答主
回答量:238
采纳率:100%
帮助的人:117万
展开全部
setInterval动作的作用是每隔一定时间就调用函数,方法或对象。
所以跟点击次数是无关的!
第一条 b=5 不在setInterval内,所以点击后只执行一次! 会随着setInterval调用次数而减少。
第二条 b=5 在setInterval内,每一次调用setInterval时,都会从新给b赋值。所以每次alert都为4.值不变。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式