执行环境 作用域 作用域链 闭包的理解

1.首先 当一个变量或者函数被声明的时候 它的执行环境便被确认 ,

执行环境定义了变量和函数有权访问的其他数据,决定了他们各自的行为,

而作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期

 每次进入一个新的执行环境,都会创建一个用于搜索变量和函数的作用域链。作用域链是函数被创建的作用域中对象的集合。作用域链可以保证对执行环境有权访问的所有变量和函数的有序访问。

  作用域链的最前端始终是当前执行的代码所在环境的变量对象(如果该环境是函数,则将其活动对象作为变量对象),下一个变量对象来自包含环境(包含当前还行环境的环境),下一个变量对象来自包含环境的包含环境,依次往上,直到全局执行环境的变量对象。全局执行环境的变量对象始终是作用域链中的最后一个对象。

2.闭包则是打破作用域链可以从父环境访问到子环境中的变量的函数 并且不会被js的垃圾处理机制所检测 在本质上,闭包是将函数内部和函数外部连接起来的桥梁 闭包会使子函数保持其作用域链的所有变量及函数与内存中 容易造成内存泄漏

原文地址:https://www.cnblogs.com/wildccy/p/10540608.html