为什么这样不行

来源:8-17 编程练习

唯尔半截湘妃

2016-05-23 16:37

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

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);

写回答 关注

3回答

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

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

    唯尔半截湘妃

    非常感谢!

    2016-05-24 20:25:29

    共 1 条回复 >

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

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

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

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

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

    唯尔半截湘妃

    我觉得都一样啊!比如说第一次获取到5,给它设置成n--,也就是4,那它第二次获取到的不就是4吗?然后再n--

    2016-05-23 17:09:25

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题