变量提升是 JavaScript 中的一个特性,在代码执行之前,变量和函数声明会被提升到其所在作用域的顶部。
变量提升对变量和函数的声明有不同影响:
变量的提升:
使用 var 声明的变量会被提升到其所在函数的顶部或全局作用域的顶部(如果在函数外部声明的话)。
在变量被声明之前,可以使用该变量,但其值为 undefined。
变量赋值的行为不会被提升,只有变量声明会被提升。
示例代码如下所示:
console.log(x); // 输出 undefined
var x = 10;
console.log(x); // 输出 10
函数的提升:
使用 function 声明的函数会被整体提升到其所在函数的顶部或全局作用域的顶部。
在函数被声明之前,就可以调用该函数。
示例代码如下所示:
foo(); // 输出 "Hello, foo!"
function foo() {
console.log("Hello, foo!");
}
虽然变量和函数的声明会被提升,但它们的初始化或赋值操作并不会提升。