一言不合,
翠花,
上酸菜!
//随意写个函数哈
var arr=[];
for(var i=0;i<3;i++){
arr[i]=function(){
return i;
}
}
//你猜会怎样输出
console.log(arr[0]());//3
console.log(arr[1]());//3
console.log(arr[3]());//3
哦,这是为何呢?
奥,这个嘛,就是说的块级作用域题目
下面最先回归正题:
实在你如许写,效果也是一样:
var arr=[];
for(var i=0;i<3;i++){
//留空
}
console.log(i)//太暴力了,也是3!
来看看IIFE跟闭包连系大法:
var arr=[];
for(var i=0;i<3;i++){
(function(i){
arr[i].function(i){
return i;
}
})(i);
}
console.log(arr[0]());//0
console.log(arr[1]());//1
console.log(arr[2]());//2
实在,搞了半天,有个更吊炸天的妙技,
都没想通知你,晓得为何那末多人喜好ES6,
由于真的异常666:
var arr=[];
for(let i=0;i<3;i++){
arr[i]=function(){
return i;
}
}
//This is a Amazing world!
console.log(arr[0]());//0
console.log(arr[1]());//1
console.log(arr[2]());//2
var 要哭了,真的,怎样能够如许,
卑鄙!下游!无耻!打码
…