var、let、const 的区别和使用场景
作用域
var 声明的变量具有函数作用域或全局作用域。如果在函数内部声明,变量只在函数内部有效;如果在函数外部声明,变量会变成全局变量。
let 和 const 声明的变量具有块级作用域。块级作用域指的是变量只在当前的代码块(如 if、for、while 等)中有效。
if (true) {
var x = 1;
let y = 2;
const z = 3;
}
console.log(x); // 输出 1
console.log(y); // 报错:y is not defined
console.log(z); // 报错:z is not defined
变量提升
var 存在变量提升现象,即变量在声明之前可以被访问,但其值为 undefined。
let 和 const 不存在变量提升,如果在声明之前访问会报错。
console.log(a); // 输出 undefined
var a = 1;
console.log(b); // 报错:Cannot access 'b' before initialization
let b = 2;
重复声明
var 允许在同一作用域内重复声明同名变量,后面的声明会覆盖前面的声明。
let 和 const 不允许在同一作用域内重复声明同名变量,否则会报错。
var c = 1;
var c = 2; // 不会报错
let d = 1;
let d = 2; // 报错:Identifier 'd' has already been declared
值的可变性
var 和 let 声明的变量可以被重新赋值。
const 声明的变量是常量,一旦赋值后不允许修改。但如果 const 声明的是对象或数组,其属性或元素可以被修改。
let e = 1;
e = 2; // 不会报错
const f = 1;
f = 2; // 报错:Assignment to constant variable
const g = { name: 'Alice' };
g.name = 'Bob'; // 不会报错
使用场景
var 在现代 JavaScript 开发中已经很少使用,除非需要兼容旧代码或特殊场景。
let 适用于需要重新赋值的变量,如循环计数器或需要多次修改的变量。
const 适用于不需要修改的变量,如配置项、常量值或引用类型(对象、数组)的变量声明。使用 const 可以提高代码可读性和安全性。
// 推荐使用 const
const PI = 3.14159;
const config = { apiUrl: 'https://example.com' };
// 需要重新赋值时使用 let
let count = 0;
count += 1;
1163

被折叠的 条评论
为什么被折叠?



