夏天夏 夏天夏
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夏天夏

我也不饶岁月
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 技术分享

    • 小白都能看懂的闭包
      • 闭包概念
        • 简单解释
        • 详细解释
      • 闭包目的
      • 误区
      • 闭包代码
      • 闭包缺点
      • 总结
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • 使用npm script打造前端工作流
    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

  • 个人博客
  • 技术分享
夏天夏
2022-05-15
目录

小白都能看懂的闭包原创

# 闭包概念

# 简单解释

闭包就是一个访问父函数局部变量的函数

# 详细解释

《javascript 高级程序设计》中闭包的概念:闭包,其实是一种语言特性,它是指的是程序设计语言中,允许将函数看作对象,然后能像在对象中的操作般在函数中定义实例(局部)变量,而这些变量能在函数中保存到函数的实例对象销毁为止,其它代码块能通过某种方式获取这些实例(局部)变量的值并进行应用扩展。

# 闭包目的

闭包是为了让变量长久保存(防止垃圾回收)的同时不会造成全局污染。

# 误区

这里我们容易产生一个常见的概念误区,有些人会把 JavaScript 执行上下文,或者作用域(Scope,ES3 中规定的执行上下文的一部分)这个概念当作闭包。 实际上 JavaScript 中跟闭包对应的概念就是“函数”,可能是这个概念太过于普通,跟闭包看起来又没什么联系,所以大家才不自觉地把这个概念对应到了看起来更特别的“作用域”吧(其实我早年也是这么理解闭包,直到后来被朋友纠正,查了资料才改正过来)。

# 闭包代码

function a() {
  let i = 0;
  return function () {
    i++;
    console.log(i);
  };
}
var x = a(); //a()执行的结果就是闭包
x(); //1
x(); //2
1
2
3
4
5
6
7
8
9
10

# 闭包缺点

使用闭包会导致内存泄漏。闭包会携带包含其它的函数作用域,因此会比其他函数占用更多的内存。

# 总结

每当我们学习一项技术的时候,应该知道其利弊,并且灵活使用,在常见业务场景中遇到一些人都是为了让变量不全局污染,有块级作用域,而这时候可以使用 es6 的 let 或者 const,不要为了使用闭包而用闭包。

编辑 (opens new window)
#闭包#垃圾回收
上次更新: 2022/06/01, 09:55:08
关于后台管理应用

关于后台管理应用→

最近更新
01
远程办公的个人思考
02-21
02
SEO
01-02
03
NFT的价值
12-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 夏天夏 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式