var let const 的区别和使用场景

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值