在学习闭包时,有一个很经典的例子。对这个例子的理解可以从闭包角度,但也要加上函数的知识。
对函数定义和执行时机的理解
给一个变量赋于函数定义时只是将函数定义的代码片段的引用赋予变量,即将函数定义代码块的指针赋予变量,并没有实际运行函数代码块。在执行这个函数时才运行,这就导致后面运行时,i的值已经发生变化,变成10,n也就赋值为10,函数返回10.
var arr =[]
for (var i=0;i<10;i++){
arr[i] = function () {
var n=i
return n
}
}
function () {
var n=i
return n
}
arr[2]()//10
```