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

前端之家收集整理的这篇文章主要介绍了javascript – 为什么我的全局变量在本地声明之前被遮蔽了?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
x = 1; 
alert(x); 
var y = function() { 
    alert(x); 
    var x = 2; 
    alert(x); 
} 
y();

3个警报的结果是:1,undefined,2(Chrome 25)

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

解决方法

由于 hoisting,这是执行的内容
x = 1; 
alert(x); 
var y = function() { 
    var x; // <-- this gets hoisted up from where it was.

    alert(x); 
    x = 2; 
    alert(x); 
} 
y();

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

猜你在找的JavaScript相关文章