首页 > 其他 > 详细

执行上下文和作用域链

时间:2021-09-01 22:10:34      阅读:5      评论:0      收藏:0      [点我收藏+]

1.执行上下文

分类:{
全局执行上下文
函数执行上下文
eval函数执行上下文
}
执行栈:{
执行栈就是“调用栈”,是一种LIFO(先进先出)的数据结构域
用于存储代码运行的执行上下文
当引擎在执行脚本时,先创建全局执行上下文压入栈
当引擎调用一个函数时,会为该函数创建执行上下文压入栈顶部
引擎会先执行执行上下文在顶部的函数,执行后,会弹出,然后控制流程会到达当前执行上下文的下一个上下文
一旦所有代码执行完毕,js引擎从执行栈中移除全局执行上下文
}

2.作用域链

作用域2种工作模型:{
词法环境:es6之前的作用域链,作用域链由词法环境决定,js采用
变量环境
}
作用域链:{
作用域:就是隔离变量,分为全局作用域、方法作用域、块级作用域
作用域链:变量查找,从当前作用域一层一层向上查找,就是作用域链
}

3.比较

js执行:{
解释阶段:词法分析、语法分析、作用域规则确定
执行阶段:执行上下文、执行函数代码
}
作用域和执行上下文区分:{
作用域在代码定义就确定了,执行上下文是在代码执行生成
作用域访问的变量是编写代码确定的,执行上下文访问的this是运行时确定
作用域中可能有多个执行上下文
同一作用域,不同调用会产生不同的执行上下文
}

执行上下文和作用域链

原文:https://www.cnblogs.com/LunuZ/p/15206951.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!