首页 > 关于js作用域的问题

关于js作用域的问题

javascriptvar a = new Array;
for (var i = 0; i < 10; i++) {
    var c = i;
    a[i] = function () {
        console.log(c);
        };
    }
for(i=0;i<10;i++){
        a[i]();
    }
a[i]()的值全为9
按的我的理解是,按执行顺序,第一个for是先行执行了,当执行完毕,变量C的值,也就是恒等为9。当第二个for调用a[i]时,由于c的值已经固定了,所以不管调用多次,a[i]()都是为9,而不会发送变化。
不知道这样的理解正确否?

这里有个大坑,是关于作用域引用的,你可以看看,加深理解

   var a = new Array;
for (var i = 0; i < 10; i++) {
    a[i] = function () {
        console.log(i);
        };
    }
for(var c=0;c<10;c++){
        a[c]();
    }

就是这样的理解,你自己把a全部打出来看看就知道的。


你的理解是对的,因为js的执行是顺序执行的,所以第一个for执行完毕后,第二个for才执行,所以你输出的值是对的

【热门文章】
【热门文章】