课程
/前端开发
/JavaScript
/JavaScript进阶篇
如下代码,1、为什么i=5必须放在外面作为全局变量整个秒数才会倒数到0,为什么放在函数里面作为局部变量就只倒数1此显示结果为4.
2、如果我在函数中不用var声明是局部变量,直接就i=5那应该是全局变量吧,但是还是只显示4,秒数不变。
求解释,谢谢~~
2016-03-27
源自:JavaScript进阶篇 8-17
正在回答
1、你这代码,我复制过来看,好像是从4开始,并且是不会倒数的。很显然,最开始autotime()调用函数,i = 5,i有自减1,代码就把i的值(4)赋值给了span标签里面的内容。因此是从4开始的。而不会倒数是因为setTimeout()这个对象是在指定的延迟时间之后来执行代码,根本没有达到循环的效果。应该用setInterval().
2、假如正如你说的你的代码能倒数到0,如果i=5作为autotime()函数里面的局部变量,每次循环的时候都会重新给i赋值,因此只倒数1次(即你问的第二个问题)。放在外面作为全局变量就不会出现这种问题。
举报
本课程从如何插入JS代码开始,带您进入网页动态交互世界
6 回答函数有全局变量和局部变量之分吗?
1 回答js局部变量
3 回答JS的全局变量
1 回答i关于局部变量的问题
1 回答这里面 i 和 hobby 都是全局变量嘛