闭包

函数 A 返回了一个函数 B,并且函数 B 中使用了函数 A 的变量,函数 B 就被称为闭包。像下面这个就是一个简单的闭包。

functionA(){

  var a = 1  

functionB(){

      console.log(a)

  }

  return B

}

函数B调用了函数A的变量,函数A返回给了函数B,这样就形成了一个闭包。

下面看一个高级一点的闭包


上边只会把那个函数放到数组里 并不会执行,在下面才会执行,所以在下边执行时i已经变成了10,所以会打印出来10个10.

下面是解决办法 ,为循环创建一个私有作用域,这样在里边就会先执行。let也可以解决闭包问题。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容