资讯专栏INFORMATION COLUMN

Javascript基础知识-执行上下文和执行上下文栈

Wuv1Up / 2428人阅读

摘要:具体表现为执上下栈浏览器中的解释器是单线程的,相当于浏览器中同时间只能做个事情。代码中只有个全局执上下,和数个函数执上下,这些组成了执上下栈。个函数的执上下,在函数执完毕后,会被移出执上下栈。逗号表达式只返回最后一项。

执⾏上下⽂

当函数执⾏时,会创建⼀个称为执⾏上下⽂(execution contex)的环境,分为创建和执⾏2个阶段
创建阶段,指函数被调⽤但还未执⾏任何代码时,此时创建了⼀个拥有3个属性的对象:

executionContext = {
scopeChain: {}, // 创建作⽤域链(scope chain)
variableObject: {}, // 初始化变量、函数、形参
this: {} // 指定this
}

代码执⾏阶段主要的⼯作是:1、分配变量、函数的引⽤,赋值。2、执⾏代码。
在javascript创建阶段会出现变量提升(Hoisting)。
具体表现为:

function demo(){
    console.log(a);
}
demo();

function demo(){
    console.log(a);
    var a = 2;
}
demo();

执⾏上下⽂栈

浏览器中的JS解释器是单线程的,相当于浏览器中同⼀时间只能做⼀个事情。
代码中只有⼀个全局执⾏上下⽂,和⽆数个函数执⾏上下⽂,这些组成了执⾏上下⽂栈(Execution Stack)。
⼀个函数的执⾏上下⽂,在函数执⾏完毕后,会被移出执⾏上下⽂栈。
具体表现为:

function c(){
    console.log("hello world");
}
function a(){
    function b(){
        c();
    }
    b();
}
a();

| c()    |
| b()    |
| a()    |
| gobal  |
----------

它是一个栈型的,先执行的先进去后结束,后进去的先结束。

逗号表达式只返回最后一项。var a = (0,1,2,3); a = 3;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106372.html

相关文章

  • 前端进阶系列(七):什么是执行下文?什么是调用

    摘要:什么是中的调用栈调用栈就像是程序当前执行的日志。当函数执行结束时,将从调用栈中出去。了解全局和局部执行上下文是掌握作用域和闭包的关键。总结引擎创建执行上下文,全局存储器和调用栈。 原文作者:Valentino 原文链接:https://www.valentinog.com/blog/js-execution-context-call-stack 什么是Javascript中的执行上下文...

    leone 评论0 收藏0
  • 【进阶1-2期】JavaScript深入之执行下文变量对象

    摘要:本计划一共期,每期重点攻克一个面试重难点,如果你还不了解本进阶计划,点击查看前端进阶的破冰之旅本期推荐文章深入之执行上下文栈和深入之变量对象,由于微信不能访问外链,点击阅读原文就可以啦。 (关注福利,关注本公众号回复[资料]领取优质前端视频,包括Vue、React、Node源码和实战、面试指导) 本周正式开始前端进阶的第一期,本周的主题是调用堆栈,今天是第二天。 本计划一共28期,每期...

    Richard_Gao 评论0 收藏0
  • 深入理解JavaScript执行下文执行

    摘要:执行上下文和执行栈是中关键概念之一,是难点之一。理解执行上下文和执行栈同样有助于理解其他的概念如提升机制作用域和闭包等。函数执行完成,函数的执行上下文出栈,并且被销毁。 前言 如果你是一名 JavaScript 开发者,或者想要成为一名 JavaScript 开发者,那么你必须知道 JavaScript 程序内部的执行机制。执行上下文和执行栈是JavaScript中关键概念之一,是Ja...

    silenceboy 评论0 收藏0
  • 深入理解JavaScript执行下文执行

    摘要:执行上下文和执行栈是中关键概念之一,是难点之一。理解执行上下文和执行栈同样有助于理解其他的概念如提升机制作用域和闭包等。函数执行完成,函数的执行上下文出栈,并且被销毁。 前言 如果你是一名 JavaScript 开发者,或者想要成为一名 JavaScript 开发者,那么你必须知道 JavaScript 程序内部的执行机制。执行上下文和执行栈是JavaScript中关键概念之一,是Ja...

    leiyi 评论0 收藏0
  • 前端进击的巨人(一):执行下文执行,变量对象

    摘要:在中,通过栈的存取方式来管理执行上下文,我们可称其为执行栈,或函数调用栈。而处于栈顶的是当前正在执行函数的执行上下文,当函数调用完成后,它就会从栈顶被推出理想的情况下,闭包会阻止该操作,闭包后续文章深入详解。 写在开篇 已经不敢自称前端小白,曾经吹过的牛逼总要一点点去实现。 正如前领导说的,自己喝酒吹过的牛皮,跪着都得含着泪去实现。 那么没有年终完美总结,来个新年莽撞开始可好。 进击巨...

    _Suqin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<