javascript
var 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才执行,所以你输出的值是对的