var num = 0,i; function startCount(){ document.getElementById("count").value = num; num += 1; i = setTimeout("startCount()",100); } function stopCount(){ clearTimeout(i); } 这样是ok的,但是把六行的i前面加上var,即var i = setTimeout("startCount()",100);就有问题呢?
你在第六行的i前面加上var,对于startCount()来说他是个局部变量,那么在stopCount()中的i的值只能是第一行中的全局变量i而不能用局部变量中的i;也可以理解为一个函数的局部变量不能在另一个函数中直接引用
我试了你的代码了,加上var也还是能正常运行的啊。感觉楼上那几个都是扯犊子,var只是声明变量而已,怎么还可能影响他的作用域。
1楼正解 你前面声明的i的在
<script type="text/javascript"></script> 内 都有效
i是全局变量,函数内不能声明和i名字一样的变量