b();
console.log(a);
var a = 'Hello World';
function b(){
console.log('Called b!');
}
我读过“吊装”这个词,但对我来说不是很清楚。为什么当变量设置为未定义时函数会被执行?
有趣的是,变量没有显示任何错误。但它显示未定义。但是当我完全删除变量时,它会显示错误。这意味着,变量存在于某处。正确的?
但是如果它存在,那为什么编译器不能编译它并且可以编译这里的函数呢?
我知道 var a 正在被提升。我想知道为什么引擎以不同的方式处理变量和函数,这就是执行上下文期间幕后发生的事情。
任何详细的解释都将有助于了解引擎如何创建执行上下文。
在这个问题中,我问的是 javascript 引擎对函数和变量的行为有何不同。以及执行阶段的创建状态和执行状态到底发生了什么。所以,这不是一个重复的问题。