面试题答案
一键面试变量声明提升机制
在JavaScript中,变量声明提升是指在函数或全局作用域内,变量声明会被提升到作用域的顶部,而变量的初始化(赋值)仍在原来的位置。这意味着在代码执行前,JavaScript引擎会先扫描整个作用域,将所有变量声明“提升”到作用域的最前面,但不会提升变量的赋值操作。
对变量初始化顺序的影响
变量声明提升使得变量在声明之前就可以使用,但由于只是声明被提升,初始化没有提升,所以在声明之前访问变量会得到undefined
。例如:
console.log(b);
var b;
b = 10;
// 这里会输出undefined,因为变量b声明被提升到了作用域顶部,但赋值操作仍在原来位置,
// 此时访问b,b还未被赋值,所以是undefined
给定代码分析
对于代码console.log(a); var a = 5;
,输出是undefined
。原因是变量a
的声明被提升到了作用域顶部,等价于以下代码:
var a;
console.log(a);
a = 5;
在执行console.log(a)
时,a
已声明但未初始化,所以输出undefined
。