我不知道的 V8
词法作用域与执行上下文:静态与动态的协作
"作用域"和"执行上下文"这两个概念,很多 JavaScript 开发者混用。它们不是同一个东西,但联系很紧密。更少有人知道的是,这两个概念在 V8 内部有具体的数据结构对应——理解这些结构,才能真正解释闭包的行为,以及变量查找为什么是这个顺序。
V8, 闭包 +2
// 共 2 篇文章
"作用域"和"执行上下文"这两个概念,很多 JavaScript 开发者混用。它们不是同一个东西,但联系很紧密。更少有人知道的是,这两个概念在 V8 内部有具体的数据结构对应——理解这些结构,才能真正解释闭包的行为,以及变量查找为什么是这个顺序。
在 JavaScript 里,函数既是对象(typeof fn === 'function',但 fn instanceof Object === true),又是可执行的代码块。这个"双重身份"不是语言层面的比喻,而是 V8 内部有具体实现的机制。一个普通对象写了 foo()…