javascript执行上下文

什么是执行上下文

1.什么是执行上下文

总结一句话:执行上下文就是当前javascript代码被解析和执行时存在的环境(抽象概念)。

2.执行上下文的类型

(1)全局执行上下文:这是默认的,最基础执行上下文。

  • 不在函数内部的代码都位于全局执行上下文中
  • 创建一个全局对象,其实就是我们的windown对象
  • 将this指针指向这个全局对象。
    (2)函数执行上下文:每次函数被调用的时候,就会创建一个新的执行上下文。
  • 每个函数都有自己的执行上下文
  • 一个程序中可以存在任意数量的函数执行上下文
  • 每一个函数执行上下文被创建,它都会按照特定的顺序执行一系列的步骤
    (3)eval函数执行上下文:运行在eval函数中的带吧也获得自己的执行上下文

3.执行上下文的生命周期

总的来说:创建阶段—执行阶段—回收阶段

以函数执行上下文为例
(1)创建阶段
当函数被调用,但是未执行内部的任何代码之前,会做以下几件事

  • 创建变量对象:首先会初始化函数的参数arguments(带参函数的那个变量),提升函数声明和变量声明。

  • 创建作用域链:在执行上下文创建阶段,作用域链是在变量对象之后创建的,作用域链本身包含变量对象。作用域链用来解析对象。就是函数参数在定义的时候没找到相对应的参数,就会往上一层作用域去找。

  • 确定this指向:很多情况
    (2)执行阶段

  • 执行变量赋值,代码执行
    (3)回收阶段

  • 执行上下文出栈,等待虚拟机回收

4.变量提升和函数声明提升

链接

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值