JavaScript 变量提升
JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。
JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。
先来看两个实例
实例1
<script>
test = 'Hello JavaScript';
console.log(test);
var test;
</script>
结果:Hello JavaScript
实例 2
<script>
test = 'Hello JavaScript';
console.log( window.test); //console.log( 'test' in window) true
</script>
结果:Hello JavaScript
可以看出,两者打印结果相同。
原理:当不用var声明一个JavaScript全局变量时,实际上是定义了全局对象的一个属性。(在客户端的JavaScript中,在浏览器窗口中的所有JavaScript代码中,Window对象充当了全局对象。)
实例2,test变量由于未被定义,所以此时变量默认属于window对象。打印结果依然和实例1相同。
JavaScript 初始化不会提升
JavaScript 只有声明的变量会提升,初始化的不会。
以下两个实例结果结果不相同:
实例 1
var x = 5; // 初始化 x
var y = 7; // 初始化 y
console.log( x + ' ' + y)
结果:5 7
实例 2
var x = 5; // 初始化 x
console.log( x + ' ' + y)
var y = 7; // 初始化 y
结果:5 undefined