问答详情
源自:8-17 编程练习

关于局部变量和全局变量

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

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

求解释,谢谢~~

提问者:Lshah 2016-03-27 19:04

个回答

  • Lying_Xx
    2016-03-27 21:04:42

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

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