首页
版块
搜索
注册
|
登录
资源下载
/
一个例子来认识闭包是什么,为什么需要它.md
返回
加入收藏
举报
当前仅显示指定条件回帖 [
展开查看全部
]
i-want-offer
02-14 18:37
#
文件名称:
一个例子来认识闭包是什么,为什么需要它.md
所在目录:
docs / JavaScript
文件大小:
1.44 KB
下载地址:
前端重要知识点、算法知识、各大小厂真题
i-want-offer/FE-Essay
GitHub下载
镜像1
镜像2
免责声明:本网站仅提供指向 GitHub 上的文件的链接,所有文件的版权归原作者所有,本网站不对文件内容的合法性、准确性或安全性承担任何责任。
文本预览:
# 一个例子来认识闭包是什么,为什么需要它
假设有一个需求,需要在页面上显示一个浏览时间,从打开页面的瞬间开始计时,每过一秒加一。
本质上说,这个业务就是一个累加器,每过一秒自增一次。
首先最简单的 **「每隔一秒加一」** ,我们立刻想到的是使用计时器,每隔一秒调用一起累加器函数:
```js
let second = 0
function counter() {
second++
}
setInterval(function() {
// 调用累加器
counter()
}, 10000)
```
可以看到我们已经实现了所需要的功能, 这也是 **最低级** 的实现方法。
为什么说是 **最低级呢** ,因为我们实现功能的思路是定义一个 **全局变量** ,每次累加都是在更新这个全局变量。而软件开发中有一条不成文的规定就是: **尽可能少定义全局变量** 。
大致有两个原因:
* **难以控制** :可以在任何地方进行读写,意味着可能会被不相干的函数改写;
* **占用内存** :全局变量占用内存的生命周期长。一般局部变量在函数调用完毕之后都会被垃圾回收器回收释放;而全局变量因为可以在任何地方进行读写,因此垃圾回收器很难做出是否应该释放全局变量的判断,因此全局变量会一直占用内存。
综上所述,我们接下来要做的工作就是实现功能的同时, **避免定义全局变量污染环境** 。
点赞
回复
回帖
支持markdown部分语法
?

[
文字
](
链接
)
```
多行代码
```
`
单行代码
`
**
加粗
**
*
斜体
*
###
标题
>
引用
1.
有序列表
-
无序列表
!-
单选投票选项
!--
多选投票选项
上传附件
提交
X