如何理解ES5中for循环中的i值呢?

ES5

var a = [];
    //ES5
    for(var i=0;i<10;i++){
        a[i] = function(){
            console.log(i);
        }
    }
    a[2]();

执行代码a[2]() 打印出来的值是10;
本人大致的理解是:函数里面获取i值时,只能获取到全局作用域的i,全局作用域的i就是循环体里面i"泄露"到全局的。

我不确定自己的理解是不是错了,希望听听大神的意见。谢过

阅读 1.7k
2 个回答

js只有函数内是局部变量
所有for循环内var i=0;i是全局变量
函数是在调用时取值的
调用时循环已结束i为10所以获取的是10

我觉得十三说得对

有利于你了解变量作用域哟

顺带看看ES6的let和块状作用于吧

推荐问题