作用域链和闭包?JS引擎如何选择顺序的选择变量?
前言
前面的博客我已经说完了块级作用域的实现,站在变量环境和词法环境的角度下去看待这些个问题,会让你对js的工作模式有更加清晰的认识. 接下来我们看一段代码
function bar() {
console.log(myname)
}
function foo() {
var myname = '凯隐'
bar()
}
var myname = '拉亚斯特'
foo()
直接告诉我们这段代码应该打印什么呢?应该打印凯隐,可是结果却出人意料 打印的是拉亚斯特, 唉?不对啊,按照我们之前所说的,bar函数入栈之后查找myname,找不到就去上一个执行上下文去查找,那么应该打印的是凯隐的啊,为什么不一样呢?要解释这个情况,我们就要搞清楚作用域链了
作用域链
关于作用域链,很多人一开始学习的时候会很费解,因为这总是会出现与我们直觉不符合的东西,但是如果我们理解了调用栈,执行上下文,词法环境,变量环境等概
共有 0 条评论