笔记学习出处:渡一教育 Web前端百大项目
function test() {
var arr=[];
for(var i=0;i<10;i++){
arr[i]=function() {
document.write(i+" ");
}
}
return arr;
}
var myArr=test();
for(var j=0;j<10;j++){
myArr[j]();
}
最后的运行结果为:10个10
为什么呢?
形成了闭包,因为到最后整个函数结束时i=10,又因为函数test只是进行了声明,但是没有实现,是在函数体外才实现,所以此时i=10.
即:
记住,函数的实现运行一定是在函数实现上进行的。
AO{
arr[0]:function (){
}
arr[1]:function (){
}
arr[2]:function (){
}
......
i:10
}
如果要实现打印从1-9,可以采取下面这种方法(立即执行函数)
function test() {
var arr=[];
for(var i=0;i<10;i++){
(function(j){
arr[j]=function () {
document.write(j+" ");
}
}(i));
}
return arr;
}
var