答案:
JavaScript执行上下文(context)主要指代码执行环境的抽象概念。执行上下文分为三种:
-
全局执行上下文
-
函数执行上下文
-
eval执行上下文
每一段js代码执行,都会先创建一个上下文环境。
详细解析:
执行上下文的定义:
当代码运行时,会产生一个对应的执行环境,在这个环境中,所有变量会被事先提出来(变量提升),有的直接赋值,有的为默认值 undefined,代码从上往下开始执行,就叫做执行上下文。
运行环境由下面三种不同的代码类型确定:
- 全局代码(Global Code):代码首次执行时候的默认环境
- 函数代码(Function Code):每当执行流程进入到一个函数体内部的时候
- Eval代码(Eval Code):当eval函数内部的文本执行的时候
在上图中,我们有1个全局上下文(Global Context),使用紫色边框表示;有3个不同的函数上下文(Function Context)由绿色,蓝色,和橙色边框表示。注意!全局上下文有且只有一个,程序中其他任意的上下文都可以访问全局上下文。
如何计算执行上下文环境的个数?
- n+1
- n:函数调用的次数,函数每调用一次,开启一个对全局数
- 1:全局上下文环境
<script type="text/javascript">
function wrap() {
console.log("函数执行上下文环境")
}
wrap();
wrap();
wrap();
wrap();
wrap();
//6个执行上下文环境
console.log("全局执行上下文环境")
</script>