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

为什么这样不行

为什么这样,定时器没有作用

function ss()
    {
        var n=document.getElementById("num").innerHTML;
        document.getElementById("num").innerHTML=n--;
        
    }

setInterval(ss,1000);

而这样却有作用

  var n=document.getElementById("num").innerHTML;

function ss()
    {
        document.getElementById("num").innerHTML=n--;
        
    }

setInterval(ss,1000);

提问者:唯尔半截湘妃 2016-05-23 16:37

个回答

  • 永远1个人
    2016-05-23 17:16:59
    已采纳

    不是,因为如果在函数里面的话,你每次获取到的n都是5,因为你并没有修过n的来源,相当于 b=10 a=b a++ 然后a=11,b还是10的不会变

  • kuban
    2016-05-24 10:11:17

    多次调用的同一个函数之间没有联系,一次调用结束后,如果没有嵌套函数页没有其他引用指向这个函数,函数里的变量就被清空了,不会被保存下来的,所以每次调用都是一个新的n

  • 永远1个人
    2016-05-23 17:02:44

    因为你将n定义在函数中,定时器每次读取函数的 时候n就会重新变为初始值

    如果定义在外面,n为全局变量,调用函数的时候不会恢复为初始值