我想知道为什么下面剪切的两个代码生成两个不同的结果,如下面的参考,两个必须与全局范围内的相同,并且放置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
答案 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}}。