问答详情
源自:8-6 取消计时器clearTimeout()

重复声明变量

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);就有问题呢?

提问者:慕莱坞0714238 2016-06-22 14:03

个回答

  • Encoretune
    2016-08-01 12:21:59

    你在第六行的i前面加上var,对于startCount()来说他是个局部变量,那么在stopCount()中的i的值只能是第一行中的全局变量i而不能用局部变量中的i;也可以理解为一个函数的局部变量不能在另一个函数中直接引用

  • CharlesLvm
    2016-07-14 21:13:09

    我试了你的代码了,加上var也还是能正常运行的啊。感觉楼上那几个都是扯犊子,var只是声明变量而已,怎么还可能影响他的作用域。

  • 大叔9
    2016-06-22 15:10:19

    1楼正解      你前面声明的i的在

    <script type="text/javascript"></script> 内 都有效 


  • 中2Man
    2016-06-22 15:05:25

    i是全局变量,函数内不能声明和i名字一样的变量