为什么输出为2(而不是未定义)?

时间:2018-10-09 21:46:05

标签: javascript

我正在学习JavaScript。我写了一个简单的代码片段:

var a=5;
var a=7;

console.log(a);

这将输出7,这是可以理解的。但是:

var b=2;
var b;    //!=undefined?

console.log(b);

输出2。我期待undefined,因为变量在初始化时被初始化为undefined。我想念什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

由于吊装。您的代码将被浏览器解释,例如:

var b;
var b;

b = 2;

console.log(b);

有关更多信息:https://www.w3schools.com/js/js_hoisting.asp

答案 1 :(得分:1)

var初始化被初始化 ,并且重复的初始化将被忽略。变量分配未吊起。因此,对于解释器来说,您的第一个代码看起来更像:

var a;
a = 5;
a = 7;
console.log(a);

第二个代码如下:

var b;
b = 2;

如果b之前已被声明为var,则仅忽略一个简单的“ var b”。