setInterval中的变量问题?这是闭包问题么?

   var goTop=function (){
            let i=0;            i++;            
            console.log(i);    
    }

        setInterval(goTop,1000);

这段代码为什么一直打印出1,如何让他打印12345,i递增!


隔江千里
浏览 984回答 1
1回答

MMTTMM

**因为你每次调用函数goTop,又let i=0;把i重新声明为0了 要输出1234....只需要把let扔出去**    let i = 0;     var goTop = function() {         i++;         console.log(i);     }     setInterval(goTop, 1000)顺便下面这个才叫闭包:闭包的二大要点:// 1、在函数A外面,调用函数A内的内容——函数B// 2、函数B可以层层向上调用局部变量n和全局变量m,但是外面的无法获取nvar m = 100;function A() {    var n = 50;    function B() {         n++;        var sum = n + m;        console.log(sum);     }    return B; // 此处注意是 B 而不是B(),返回的是函数的内容,而不是执行后的结果}var c = A(); c();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript