猜猜下面的代码会输出什么东东?
var foo = 1;
var foobar = function() {
console.log(foo);
var foo = 2;
};
foobar();
如果你知道局部变量这个概念的话,你可能会觉得这个输出是1
或者foo is not defined
。
如果你还知道JS里有变量提升这个概念的话,你可能觉得这个输出会是2
。
如果你还知道JS里的变量提升只能提升变量,但不能把值也带过去的话,你会觉得这个输出会是undefined
。
对啦,就是undefined
。