var fun = function(){
for(var i = 0 ,arr = []; i<3; i++){
arr[i] = function(){ console.log(i) }
}
return arr
}
var funs = fun();
funs[0](); //3
funs[1](); //3
funs[2](); //3
解析:
函数 fun 仅调用了1次,只创建了一个作用域,通过 for 循环分别创建了3个子函数保存在数组arr中,此时子函数并未调用,当for循环结束时,i = 3。