我们如何解释这里的javascript提升?

时间:2017-06-28 23:16:28

标签: javascript hoisting

我想知道为什么下面剪切的两个代码生成两个不同的结果,如下面的参考,两个必须与全局范围内的相同,并且放置var不会产生影响。

由于下面的解释和Javascript提升两个生成相同的输出,我的印象很差,但不要!为什么呢?

What is the purpose of the var keyword and when to use it (or omit it)?

console.log(a)
var a = 90;
// undefined

VS

console.log(a)
a = 90; // no var keyword
// Uncaught ReferenceError: a is not defined

1 个答案:

答案 0 :(得分:2)

当您添加var关键字时,它的作用是将var部分作为该范围的声明移动并使其成为undefined。在第一种情况下,使用var

console.log(a)
var a = 90;
// undefined

重写为:

var a = undefined;
console.log(a)
a = 90;
// undefined

所以,你在这里获得undefined,而你的第二种情况也是如此,在window名为a的对象中没有声明或关键字。希望这是可以理解的。

这里的要点是,当您使用var关键字时,会立即在范围顶部将undefined定义为{{1}}。