This page is generated by AI.
在 JavaScript 中,var、let 和 const 是用于声明变量的三种关键字。它们在作用域、变量提升、重复声明以及是否允许重新赋值等方面存在显著差异。
var 的特点
var 是 ES6 之前唯一的变量声明方式,具有以下特点:
- 作用域:var 的作用域是函数作用域或全局作用域,而不是块级作用域。
if (true) {
var x = 10;
}
console.log(x); // 输出 10- 变量提升:var 声明的变量会在编译阶段被提升到作用域顶部,但值为 undefined。
console.log(a); // 输出 undefined
var a = 5;- 允许重复声明:在同一作用域中可以重复声明变量。
var a = 1;
var a = 2;
console.log(a); // 输出 2let 的特点
let 是 ES6 引入的,用于解决 var 的一些问题,具有以下特点:
- 块级作用域:let 的作用域是代码块 {} 内,块外无法访问。
if (true) {
let y = 20;
}
console.log(y); // 报错:ReferenceError
- 暂时性死区(TDZ):在变量声明之前访问会报错。
console.log(b); // 报错:ReferenceError
let b = 10;- 不允许重复声明:在同一作用域中不能重复声明变量。
const 的特点
const 也是 ES6 引入的,用于声明常量,具有以下特点:
- 块级作用域:与 let 一样,const 也具有块级作用域。
- 必须初始化:声明时必须赋值。
- 不可重新赋值:声明后不能更改其值。