前端笔记-09-作用域链 & 闭包

96 阅读1分钟

在每个执行上下文的变量环境中都包含了一个外部引用,用来指向外部的执行上下文,称为outer。

作用域链

当一段代码使用了一个变量的时候,Javascript引擎会先在当前的执行上下文中查找该变量,如果没有查找到,则会继续在其外部的执行上下文中查找,我们把这种查找的链条成为作用域链

词法作用域

词法作用域就是指作用域是由代码中函数声明的位置来决定的,跟函数调用的方式没有关系。

闭包

根据词法作用域的规则,函数内部的函数总是可以访问其外部函数里定义的变量,因此当外部函数结束的时候,内部函数依然可以时候外部函数中的变量。我们就把这样的内部函数称为闭包。

如果闭包使用不正确,会很容易造成内存泄露。