首页 > 其他 > 详细

for循环中,使用闭包和不使用闭包的区别以及原因

时间:2020-02-23 18:30:22      阅读:169      评论:0      收藏:0      [点我收藏+]
// 问题1:判断下面一段代码运行的结果是什么?
var data = []
for (var i = 0; i < 3; i++) {
  data[i] = function() {
    console.log(i)
  }
}

data[0]()
data[1]()
data[2]()


/**
 *  运行结果
 *  3
 *  3
 *  3
 */

// 问题2:怎么修改代码可以使data[i]与i的值相同

// 方法1 使用闭包
for (var i = 0; i < 3; i++) {
  ;(function(j) {
    data[j] = function() {
      console.log(j)
    }
  })(i)
}

// 方法2 使用 let 关键字
for (let i = 0; i < 3; i++) {
  data[i] = function() {
    console.log(i)
  }
}

/**
 *  运行结果
 *  0
 *  1
 *  2
 */

  

for循环中,使用闭包和不使用闭包的区别以及原因

原文:https://www.cnblogs.com/cn-oldboy/p/12353003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!