作用域与执行上下文的区别
区别一:
- 全局执行上下文环境实在全局作用域确定之后,js代码马上执行之前创建[1]。
- 函数执行上下文是在调用函数时(
fn()
),函数体代码执行之前创建。
区别二:
- 除全局作用域之外,每个函数都会创建自己的函数作用域,
作用域在函数定义时就已经确定了的
,而不是在函数调用时- 作用域是静态的,只要函数定义好了就一直存在,且不会再发生变化。
- 执行上下文是动态的,调用函数时(
fn()
)创建,调用结束后自动释放
联系
- 上下文环境(对象)是从属于所在作用域的。
- 全局上下文环境(对象)对应全局作用域。
- 函数上下文环境(对象)对应函数作用域。
执行上下文生命周期
- 创建阶段[1]
- 生成变量对象
- 创建arguments
- 扫描函数声明
- 扫描变量声明
- 创建arguments
- 立作用域链
- 确定this的指向
- 生成变量对象
- 执行阶段
- 变量赋值
- 函数的引用
- 执行其他代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END