JavaScript,理解函数闭包的概念,变量作用域封装
发布于 作者:苏南大叔 来源:程序如此灵动~

闭包是高级编程语言里面非常基础的概念,苏南大叔的经验理解就是:把一部分函数或者变量,放在一个匿名函数里面执行。闭包起到了一个打包和隔离的作用。不过,官方对闭包的解释却是有些不同的。本文在JavaScript
语言的环境下,对“闭包”的概念做个诠释。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:nodejs@20.18.0
,chrome@132.0.6834.84
。
前文回顾
闭包和匿名函数的概念,是紧密相关的。因为匿名函数的一个重要使用场景就是闭包:在闭包逻辑内部,返回一个匿名函数。
相关链接:
如果改成闭包的概念的话,代码类似:
闭包概念
闭包是可访问一个函数作用域里变量的函数。闭包=函数+引用环境。
- 闭:指的是定义存在于函数内部的(匿名)函数。
- 包:闭函数包含了对外层函数名字的引用。
下面的代码闭包,return
的匿名函数,可以访问到外部的变量i
。变量i
被打包隔离了,但是依然可以被匿名函数访问到。
this
这种函数里面return
一个匿名函数的问题。由于匿名函数可能存在着两种形式,而对应的this
逻辑存在着较大区别。
arguments
这里的arguments
,碰到了箭头函数的话,依然是有特殊情况。箭头函数没有arguments
,它依然是继承父层的arguments
变量。所以,这种闭包也是这样的情况。
结语
这篇文章里面,闭包函数里面return
的匿名函数,都可以访问到外部的变量。但是,如果是箭头函数的话,this
和arguments
都是有特别的情况的。
更多苏南大叔的JavaScript
经验文章,请参考:


