We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
执行上下文(Execution Context),也称为执行环境,就是当前 JavaScript 代码运行时所在环境的抽象概念。
每当开始执行代码时,JavaScript 引擎就会为整个程序创建一个执行上下文(全局执行上下文),JavaScript 代码都是在执行上下文中运行的。
在 JavaScript 中,执行环境主要分为:
我们看一个例子:
var a = 'Hello World!' function helloWorld () { var a = 'Hello Function!' console.log(a) } helloWorld() console.log('a)
上述代码,创建的执行上下文结构如下图所示:
显而易见,在一个 JavaScript 程序中,通常情况下都会存在多个执行上下文,那么这些执行上下文是如何管理的呢?
JavaScript 引擎创建了执行上下文栈(Execution Context Stack) 来管理执行上下文。,又称为调用栈。
调用栈是有大小的,当入栈的执行上下文超过一定数目,JavaScript 引擎就会报错,我们把这种错误叫做栈溢出。
首先我们来了解下什么是栈数据结构?
栈中数据的存取方式类似给枪上子弹,先上的子弹最后打出,后上的子弹先打出。 特点:先进后出,后进先出
了解了栈数据结构后,我们继续来说执行上下文栈是如何管理执行上下文的?
我们用数组来模拟执行上下文栈的行为:ECStack = [];。
ECStack = [];
function fn2() { console.log('fn2') } function fn1() { console.log('fn1') fn2(); } fn1();
上述这段代码在执行过程中,执行上下文栈的行为是什么样的?我们来分析一下:
ECStack.push(global_EC);
ECStack.push(fn1_EC);
ECStack.push(fn2_EC);
ECStack.pop();
总结:
参考:
JavaScript深入之执行上下文 前端基础进阶(二):执行上下文详细图解 JS 执行环境、作用域链、活动对象 The Journey of JavaScript From Downloading Scripts to Execution – Part III
The text was updated successfully, but these errors were encountered:
No branches or pull requests
执行上下文
执行上下文(Execution Context),也称为执行环境,就是当前 JavaScript 代码运行时所在环境的抽象概念。
每当开始执行代码时,JavaScript 引擎就会为整个程序创建一个执行上下文(全局执行上下文),JavaScript 代码都是在执行上下文中运行的。
在 JavaScript 中,执行环境主要分为:
我们看一个例子:
上述代码,创建的执行上下文结构如下图所示:
显而易见,在一个 JavaScript 程序中,通常情况下都会存在多个执行上下文,那么这些执行上下文是如何管理的呢?
JavaScript 引擎创建了执行上下文栈(Execution Context Stack) 来管理执行上下文。,又称为调用栈。
调用栈是有大小的,当入栈的执行上下文超过一定数目,JavaScript 引擎就会报错,我们把这种错误叫做栈溢出。
执行上下文栈
首先我们来了解下什么是栈数据结构?
栈中数据的存取方式类似给枪上子弹,先上的子弹最后打出,后上的子弹先打出。
特点:先进后出,后进先出
了解了栈数据结构后,我们继续来说执行上下文栈是如何管理执行上下文的?
我们用数组来模拟执行上下文栈的行为:
ECStack = [];
。上述这段代码在执行过程中,执行上下文栈的行为是什么样的?我们来分析一下:
总结:
参考:
The text was updated successfully, but these errors were encountered: