JS执行上下文

执行上下文

什么是执行上下文?
当代码执行进入一个环境时,就会为该环境创建一个执行上下文,它会在运行代码前做一些准备工作,比如:确定作用域、创建局部变量对象…。
JS执行上下文环境有哪些?
1.全局环境
2.函数环境
3.eval函数环境(已经不推荐使用)
执行上下文类型?
1.全局执行上下文
2.函数执行上下文
3.eval函数执行上下文
运行代码时,是怎样执行上下文的呢?
运行时首先会进入全局环境,对应会生成全局上下文,程序代码中基本都会存在函数,那么调用函数,就会进入函数环境,对应就会生成该函数的执行上下文。
补充:JS是单线程,在同个时间段只能做一件任务,完成任务之后才可以继续下一个任务。所以,必须要有一个排队机制。
JS执行多个上下文
函数编程中,代码中会声明多个函数,对应的执行上下文也会存在多个。通过栈的存取方式来管理执行上下文,也叫做执行栈。
补充:什么是栈?栈遵循“先进后出,后进先出”的规则,也称之为LIFO(“Last In First Out”)规则。注:栈的出口且仅有一个。
执行栈(函数调用栈)
如何通过栈来管理多个执行上下文
程序执行进入一个执行环境时,它的执行上下文就会被创建,并被推入执行栈中(入栈),程序执行完成时,它的执行上下文就会被销毁,并从栈中推出(出栈),控制权交由下一个执行上下文。
具体是怎么样的,用代码示例…
示例1function foo() {
    function bar() {        
        return 'I am bar';    
        } 
        return bar(); 
    } 
    foo();
    //解析:全局上下文先入栈 → foo上下文入栈 → bar上下文入栈 → bar上下文出栈 → foo上下文入栈
示例2//来分析一下,这几段代码,一共执行了多少个上下文?
(function foo(i) { 
     if (i == 3) {        
           return;    
      } else {        
         console.log(i);        
         foo(++i);   
  } 
  })(0);
  //1.全局上下文
  //2.函数上下文0
  //3.函数上下文1
  //4.函数上下文2
  //5.函数上下文
  //一共存在5个上下文,其中1个是全局上下文,4个是函数上下文
执行上下文的生命周期
执行上下文的生命周期有两个阶段:
1.创建阶段(进入执行上下文):函数被调用时,进入函数环境,为其创建一个执行上下文,此时进入创建阶段
2.执行阶段(代码执行):执行函数中代码时,此时执行上下文进入执行阶段。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值