在 JavaScript 中,var
、let
和 const
是用于声明变量的关键字,但它们的作用域、提升行为以及可变性等方面有显著区别。以下是它们的详细对比:
1. var
-
作用域:
-
var
声明的变量是函数作用域(function-scoped),即在函数内部声明的变量只能在函数内部访问。 -
如果在函数外部声明,则为全局作用域。
-
-
提升(Hoisting):
-
var
声明的变量会被提升到其作用域的顶部,但赋值不会被提升。 -
在声明之前访问变量会得到
undefined
。
-
-
重复声明:
-
允许重复声明同一个变量,不会报错。
-
-
示例:
function example() { console.log(x); // undefined (变量提升) var x = 10; console.log(x); // 10 } example();