闭包的作用与原理

什么是闭包?

  • 闭包是一个函数,而且存在于另一个函数当中
  • 闭包可以访问到父级函数的变量,且该变量不会销毁

原理:

  • 利用了作用域链,当前作用域找不到变量,会往上一级寻找,直至最外层,形成了一条链条

作用:

  • 隐藏变量,避免全局污染
  • 可以读取函数内部变量

使用:(实现a的自增)

var a = 1 //全局变量a
function add() {
  a++
  console.log(a);
}
add() //2
add() //3
add() //4
console.log(a); //4 全局变量改变
function add2() {
  var a = 1 //函数内部自定义变量
  a++
  console.log(a);
}
add2() //2
add2() //2
add2() //2
console.log(a); //1 避免了全局污染,但a没有自增
//使用闭包
function add3() {
  var a = 1
  return function() {
    a++ 
    console.log(a);
  }
}

var a3 = add3() //a3相当于闭包函数
a3() //2
a3() //3
a3() //4
console.log(a); //1 避免了全局污染,a自增
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、理解 JavaScript 的作用域、作用域链和内部原理 作用域 javascript 拥有一套设计良好的规则...
    旭哥_阅读 381评论 0 1
  • 最近除了尝试一些新的技术以外,更喜欢把时间花在研究JS的基础知识上,让我对JS很多底层实现的理解加深了不少,今天闲...
    拉面头_7c92阅读 398评论 0 1
  • 在学习 javascript 的过程中,我们第一步最应该了解和掌握的就是作用域,与之相关还有程序是怎么编译的,变量...
    liuxuan阅读 1,252评论 1 8
  • 词法作用域 和 动态作用域 我们常说js中作用域(大部分情况)在定义的时候就确定了,而this指向在运行的时候才能...
    peng233阅读 705评论 0 0
  • [图片上传失败...(image-9ad041-1561218142988)] 目录 概述 作用域编译过程词法作用...
    M1mmm阅读 302评论 0 1

友情链接更多精彩内容