Z
ZHANK
编程在线教程JavaScript 教程变量声明 let/const/var
基础入门

变量声明 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;