闭包问题

//以下打印结果是5
var arr = [1,2,3,4,5]
for(var i = 0; i < arr.length; i++){
  arr[i] = function(){
    alert(i)
  }
}
arr[1]()
//一下打印结果是 1(使用了闭包)
var arr = [1,2,3,4,5]
for(var i = 0; i < arr.length; i++){
  (function(index){
    arr[index] = function(){
      alert(index)
    }
  })(i)
}
arr[1]()
//以下打印结果是1 (使用了es6的let块级作用域)
var arr = [1,2,3,4,5]
for(let i = 0; i < arr.length; i++){
  arr[i] = function(){
    alert(i)
  }
}
arr[1]()

  

原文地址:https://www.cnblogs.com/xuanbingbingo/p/9002349.html