这是我很难回答的一个棘手的面试问题,更不用说清楚解释为什么此代码输出未定义了。
var x = 21;
var girl = function() {
console.log(x);
var x = 20;
};
girl();
因此,x = 20在console.log下面-Javascript提升了变量,但是为什么不将其输出为20?好的,让我们想象一下,它会忽略在console.log下声明的变量-为什么它不在全局范围内显示?谁能为我讲清楚?我会很感激的。
答案 0 :(得分:3)
代码的“内部表示”类似于
var x = 21;
var girl = function() {
var x; // (equals `var x = undefined`)
console.log(x);
x = 20;
};
girl();
这可能会清除它。