var a = 1;
function foo() {
console.log(a);
var a = 2; } foo(); //undefined
根据变量提升机制,最后得出undefined;
变量提升是指在一个作用域中声明的变量,JS解析时会把变量声明提升至作用域内的第一行,也就是说上面那段代码等同于:
var a = 1;
function foo() {
var a; //被提升至作用域内第一行
console.log(a);
var a = 2; } foo();
因此,也就可以理解为什么是undefined了