闭包是干什么用的
本质上闭包就是为了拓展查找自由变量的范围
MDN 对闭包的定义为:
A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment)
一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。
1 | function init() { |
name 是 displayName 函数所处环境中的变量,它们一起构成了闭包。而闭包的实现依赖于执行上下文中的作用域链。
上面这个例子有点平平无奇了,让我们看一个神奇一点的例子: