Lshah
2016-03-27 19:04
如下代码,1、为什么i=5必须放在外面作为全局变量整个秒数才会倒数到0,为什么放在函数里面作为局部变量就只倒数1此显示结果为4.
2、如果我在函数中不用var声明是局部变量,直接就i=5那应该是全局变量吧,但是还是只显示4,秒数不变。
求解释,谢谢~~
1、你这代码,我复制过来看,好像是从4开始,并且是不会倒数的。很显然,最开始autotime()调用函数,i = 5,i有自减1,代码就把i的值(4)赋值给了span标签里面的内容。因此是从4开始的。而不会倒数是因为setTimeout()这个对象是在指定的延迟时间之后来执行代码,根本没有达到循环的效果。应该用setInterval().
2、假如正如你说的你的代码能倒数到0,如果i=5作为autotime()函数里面的局部变量,每次循环的时候都会重新给i赋值,因此只倒数1次(即你问的第二个问题)。放在外面作为全局变量就不会出现这种问题。
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题