为了账号安全,请及时绑定邮箱和手机立即绑定

关于局部变量和全局变量

如下代码,1、为什么i=5必须放在外面作为全局变量整个秒数才会倒数到0,为什么放在函数里面作为局部变量就只倒数1此显示结果为4.

2、如果我在函数中不用var声明是局部变量,直接就i=5那应该是全局变量吧,但是还是只显示4,秒数不变。

求解释,谢谢~~

正在回答

1 回答

1、你这代码,我复制过来看,好像是从4开始,并且是不会倒数的。很显然,最开始autotime()调用函数,i = 5,i有自减1,代码就把i的值(4)赋值给了span标签里面的内容。因此是从4开始的。而不会倒数是因为setTimeout()这个对象是在指定的延迟时间之后来执行代码,根本没有达到循环的效果。应该用setInterval().

2、假如正如你说的你的代码能倒数到0,如果i=5作为autotime()函数里面的局部变量,每次循环的时候都会重新给i赋值,因此只倒数1次(即你问的第二个问题)。放在外面作为全局变量就不会出现这种问题。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468190    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

关于局部变量和全局变量

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信