本文将使用尽可能简单明了的语言来清楚地了解JavaScript中的范围和执行上下文。阅读本文后,您可以了解知识点:
有了这些问题,让我们开始阅读本文!
范围是指在程序源代码中定义变量的区域。
它指定了搜索变量的规则以及对变量的当前代码访问权限。
JavaScript的范围是词汇范围,也称为静态范围。
单词单词的英文名称是$词汇范围$,$词汇$表示短语。
为什么称为短语?因为编译编译器时的域规则是确定的。
编译代码编译时有三个主要阶段:
有关更多编译器原则,请参考编译器的解剖结构
静态范围:在代码编译阶段或函数定义期间,JavaScript的范围属于此。
?动态范围:确定何时调用函数。
看看一个示例以了解他们的差异。
说明:执行函数后,我发现首先找到函数功能的内部,并发现找不到它,因此根据写作位置找到上一层,并找到输出。
那么,如果它是动态范围?执行发现当前范围不可用,因此在其中找到了调用函数的上层,因此输出是输出的。
当学习JavaScript变量时,我们经常听到变量的改进,因此什么时候改进?不用担心,低头看。
执行可执行代码的一部分,而不是执行行时,JavaScript引擎将一一执行。查看以下示例:
可以看出,如果代码逐一执行,则第二个示例中的第一个结果应该是打印。
那么JavaScript如何将代码分为段落?首先,我们必须知道JavaScript中的可执行代码是什么?
分为三类:
当执行遇到功能时,它将分配一块代码。本节的一部分是我们所说的上下文。执行上下文的生命周期之一分为两个阶段:
在创建阶段,将进行大量准备工作,包括变量改进,域链的确定以及确定该方向的工作。让我们谈谈以后的特定准备工作。
让我们首先找出如何管理上下文。
对于源代码程序,无需调用函数,它将创建执行上下文。这些执行上下文使用上下文堆栈来管理,并使用一个示例来讨论其操作机制:
我们使用数组模拟堆栈。执行代码后,遇到第一个上下文,它将输入堆栈
然后将代码执行,并遇到函数调用,因此创建了函数的执行上下文以输入堆栈
我也称之为:
实际打电话:
执行,打印,执行和堆栈中的上下文,其他功能立即执行,堆栈按顺序排列:
执行整个应用程序时,将不会发布堆栈,否则将始终用作堆栈元素。
摘要部分将在序言中简要回答以下问题:
1??动作范围分为短语和动态范围。JavaScript是什么样的JavaScript?2??该短语的范围一词也称为静态范围。它与动态范围有什么区别?3??哪个阶段是由动作范围确定的?它的作用是什么?
JavaScript的范围是一个短语。它由代码汇编阶段中的代码位置确定。它的作用是指定可变搜索规则,并确定当前代码访问权限对变量的权限。
4??将哪些类别分为上下文?什么时候会创建执行上下文?如何管理大量执行上下文?
执行上下文可以分为三个类别:基于可执行代码的类型全局,函数和评估。在调用函数时创建全局上下文。执行上下文堆栈用于管理执行上下文。遇到函数调用时,将生成相应的上下文中的堆栈。执行功能后,相应的上下文不在堆栈中。除非整个程序完成,否则全局上下文将保持在堆栈的底部。
留下一个思考的问题,以下两个程序的结果是什么?有什么区别吗?
尝试使用本文的知识来模拟该过程!
原始:https://juejin.cn/post/7095237284929957