JavaScript中的闭包
我们在理解闭包时要先理解执行上下文(也就是执行环境)在JavaScript中有三种环境(全局环境,函数环境,Eval环境因为Eval环境是需要慎用的所以我们暂且只看前两种。
JavaScript执行上下文的方式是通过栈的形式来调用执行的,在每次创建执行上下文的时候会分为两个步骤:创建阶段和执行阶段,在创建阶段中会创建作用域链和变量对象(参数、变量、函数声明)和this,之后再进入执行阶段,执行其中的每一行代码,变量赋值,函数引用等动作。
理解闭包我们就要理解最关键的一点:作用域链
作用域链=当前变量对象+所有父级变量对象。上图取自B站技术蛋老师JavaScript闭包讲解视频截图
作用域链一般是层层嵌套相互关联的。