在JS里定义的变量,存在于作用域链里,而在函数执行时会先把变量的声明进行提升,仅仅是把声明进行了提升,而其值的定义还在原来位置。示例如下:
1 var test = function() {
2 console.log(name); // 输出:undefined
3 var name = "jeri";
4 console.log(name); // 输出:jeri
5 }
6
7 test();
上述代码与下述代码等价。
1 var test = function() {
2 var name;
3 console.log(name); // 输出:undefined
4 name = "jeri";
5 console.log(name); // 输出:jeri
6 }
7
8 test();
由以上代码可知,在函数执行时,把变量的声明提升到了函数顶部,而其值定义依然在原来位置。