← 返回目录

var / let / const 对比

var、let、const 都是声明变量的关键字,区别主要在作用域、能否重复声明、能否修改。

1. 对比表格

对比项 var let const
作用域 函数作用域 块级作用域 块级作用域
重复声明 可以 不可以 不可以
变量提升 有(值为 undefined) 没有(会报错) 没有(会报错)
声明时是否必须赋值 不用 不用 必须赋值
值能否修改 不能

2. 代码对比

// var:可以重复声明、可以修改
var a = 1;
var a = 2;        // 不报错,a 被覆盖成 2

// let:可以修改,不能重复声明
let b = 1;
b = 2;            // 可以,b 变成 2
// let b = 3;     // 报错:重复声明

// const:声明必须赋值,值不能改
const c = 1;
// c = 2;         // 报错:不能修改
// const d;       // 报错:必须赋初始值
	

3. 块级作用域对比

// var 没有块级作用域,{} 外面也能用
{
	var x = 1;
}
console.log(x);   // 1

// let / const 有块级作用域,{} 外面用不了
{
	let y = 1;
}
// console.log(y); // 报错:y is not defined
	

4. 使用建议

默认用 const;值需要改的用 letvar 基本不用了。