基础入门
变量声明 let/const/var
掌握 let、const、var 的区别与最佳实践
变量声明 let / const / var
JavaScript 有三种变量声明方式,各有不同的作用域规则。
学完本章你将: 掌握 let、const、var 的区别与最佳实践。
var —— 老旧的声明方式
var 是 ES6 之前的唯一选择,存在诸多问题:
javascript
// var 是函数作用域,不是块作用域
if (true) {
var x = 10;
}
console.log(x); // 10(块外仍能访问)
// var 可重复声明
var name = "Alice";
var name = "Bob"; // 不报错!
console.log(name); // "Bob"
// var 存在变量提升
console.log(y); // undefined(不报错,但值为 undefined)
var y = 5;
let —— 块作用域变量
ES6 引入的 let 解决了 var 的问题:
javascript
// 块作用域
if (true) {
let x = 10;
console.log(x); // 10
}
// console.log(x); // ❌ ReferenceError
// 不能重复声明
let name = "Alice";
// let name = "Bob"; // ❌ SyntaxError
// TDZ(暂时性死区)
// console.log(y); // ❌ ReferenceError
let y = 5;
const —— 常量声明
const 用于声明不能重新赋值的变量:
javascript
const PI = 3.14159;
// PI = 3.14; // ❌ TypeError: Assignment to constant variable
// 注意:const 保护的是引用,不是值本身
const arr = [1, 2, 3];
arr.push(4); // ✅ 可以修改数组内容
console.log(arr); // [1, 2, 3, 4]
const obj = { name: "Alice" };
obj.name = "Bob"; // ✅ 可以修改对象属性
// obj = {}; // ❌ 不能重新赋值
最佳实践
| 声明方式 | 使用场景 |
|---|---|
| `const` | **默认首选**,不会变的变量 |
| `let` | 需要重新赋值时使用 |
| `var` | 永远不要用(除非维护旧代码) |
javascript
// ✅ 推荐写法
const MAX_SIZE = 100;
let count = 0;
// ❌ 不推荐
var total = 0;