emmm。。。不知道许多小伙伴是不是还是对作用域和执行上下文不清楚,这里就简单的给大家聊聊。
作用域
首先作用域指的是代码中特定变量的有效范围。
JavaScript采用的是静态作用域。代码写在哪里作用域就在哪里确定,而不是在代码运行的时候确认。
var a = 1
let foo = function() {
console.log(a)
}
let bar = function() {
let a = 2
foo()
}
bar()
大家可以想一下这段代码执行结果。
执行上下文
简单的说吧,执行上下文就是指的是代码在解释执行时的所在环境的一个抽象概念。JavaScript中的代码都是在执行上下文中执行的。
执行上下文的生命周期包括三个阶段:创建阶段→执行阶段→回收阶段。
执行上下文是在代码运行的时候确定的,而却可以改变。最大例子就是this。