【发布时间】:2016-07-14 18:42:57
【问题描述】:
我试图了解 JavaScript 提升,据我了解,在执行代码之前为所有变量声明留出了内存空间。
我想了解解释器如何通过提升在同一变量的多个声明的情况下工作。考虑以下代码:
console.log(a);
//first declaration
function a() {
console.log('hello');
}
//second declaration
var a = 2;
输出是函数声明:
function a() {
console.log('hello');
}
所以,我假设解释器遇到的第一个声明是存储在内存中的声明。但是,将声明的顺序更改为:
console.log(a);
//first declaration
var a = 2;
//second declaration
function a() {
console.log('hello');
}
结果相同!解释器忽略第一个声明并将第二个声明存储在内存中。为什么会这样?第二种情况的输出不应该是undefined吗?
【问题讨论】:
标签: javascript hoisting