为什么我的全局变量在本地声明之前被遮蔽了?

Alb*_*Gao 6 javascript variables global-variables

x = 1; 
alert(x); 
var y = function() { 
    alert(x); 
    var x = 2; 
    alert(x); 
} 
y(); 
Run Code Online (Sandbox Code Playgroud)

3个警报的结果为:1,undefined,2(铬25)

我的问题是:为什么第二个警报未定义?为什么不是1?是不是有全局变量x?

Ja͢*_*͢ck 13

由于吊装,这是执行的:

x = 1; 
alert(x); 
var y = function() { 
    var x; // <-- this gets hoisted up from where it was.

    alert(x); 
    x = 2; 
    alert(x); 
} 
y();
Run Code Online (Sandbox Code Playgroud)

在函数开始时y(),x声明了局部变量但未初始化.