Javascript执行上下文与作用域

本文详细解析了JavaScript的执行上下文,包括生成时机、全局与函数上下文、执行栈和状态组件。同时介绍了作用域的概念,强调了词法环境与变量环境的区别,并通过实例展示了作用域链的工作原理。
摘要由CSDN通过智能技术生成

JS代码编译时就决定好了他能访问到的一切,这都得归功于执行上下文。

JS代码→编译→运行

什么是执行上下文?

执行上下文是基于ECMAscript实现,用于跟踪 运行中的代码 的规范策略,

在任何时候一段执行中的代码只能有一个执行上下文,

这一切都是隐式的,不可见的

执行上下文生成的时机?

当控制进入一段新的代码(即被编译)时,JS引擎为其生成一个新的执行上下文。

什么场景生成什么执行上下文

从执行上下文的实际表现来看,可以分为

>全局上下文:写在全局(global)中的代码

>函数上下文:新声明的函数中的代码

>eval上下文(过于深奥,MDN不推荐使用eval(),故不考虑)

JS的编译顺序是按照代码块顺序分段进行的,

全局对象中的代码是最先被编译的,所以全局上下文从JS代码被编译时就由引擎生成了。

之后编译函数中的代码,生成函数上下文

再其次是函数中新声明的函数...

执行栈

或者叫作调用栈

执行上下文用于 跟踪运行中的代码

执行栈则用于 跟踪执行上下文

每运行一段执行上下文中的代码,就会把该执行上下文压入执行栈,

新的执行上下文进入栈,则会停止运行旧的执行上下文,转而运行新的,

运行完成的执行上下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值