正如标题所述,JavaScript闭包对我来说一直有点神秘,看过很多闭包的文章,在工作使用过闭包,有时甚至在项目中使用闭包,但我确实是这是在使用闭包的知识。
最近看到的一些文章,终于,有人用于一种让我明白方式对闭包进行了解释,我将在本文中尝试使用这种方法来解释闭包。
准备
在理解闭包之前,有个重要的概念需要先了解一下,就是 js 执行上下文。
这篇文章是执行上下文 很不错的入门教程,文章中提到:
当代码在JavaScript中运行时,执行代码的环境非常重要,并将概括为以下几点:
全局作用域——第一次执行代码的默认环境。
函数作用域——当执行流进入函数体时。
(…) —— 我们当作 执行上下文 是当前代码执行的一个环境与作用域。
换句话说,当我们启动程序时,我们从全局执行上下文中开始。一些变量是在全局执行上下文中声明的。我们称之为全局变量。当程序调用一个函数时,会发生什么?
以下几个步骤:
JavaScript创建一个新的执行上下文,我们叫作本地执行上下文。
这个本地执行上下文将有它自己的一组变量,这些变量将是这个执行上下文的本地变量。
新的执行上下文被推到到执行堆栈中。可以将执行堆栈看作是一种保存程序在其执行中的位置的容器。
函数什么时候结束?当它遇到一个return语句或一个结束括号}。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。