JavaScript中的变量定义和声明
在JavaScript中,变量定义和声明是编程的基础。以下是详细解释:
1. 变量声明方式
var (ES5及之前)
var name = "张三";
var age = 25;
特点:
- 函数作用域
- 存在变量提升
- 可以重复声明
let (ES6+)
let count = 10;
let isActive = true;
特点:
- 块级作用域
- 不存在变量提升
- 不能重复声明
- 允许暂时性死区
const (ES6+)
const PI = 3.14159;
const API_URL = "https://api.example.com";
特点:
- 块级作用域
- 必须初始化赋值
- 不能重新赋值
- 对于对象/数组,内容可修改但引用不可变
2. 变量声明示例
// 不同的声明方式
var globalVar = "我是全局变量";
let blockScopedVar = "我是块级作用域变量";
const constantVar = "我是常量";
// 声明后再赋值
let message;
message = "Hello World";
// 多个变量声明
let a = 1, b = 2, c = 3;
// 常量对象
const person = {
name: "李四",
age: 30
};
person.age = 31; // ✅ 允许,修改对象属性
// person = {}; // ❌ 报错,不能重新赋值
3. 作用域差异
// var 的函数作用域
function varExample() {
if (true) {
var x = 10;
}
console.log(x); // 10,在函数内可访问
}
// let/const 的块级作用域
function letExample() {
if (true) {
let y = 20;
const z = 30;
}
// console.log(y); // ❌ 报错,y未定义
// console.log(z); // ❌ 报错,z未定义
}
4. 变量提升
// var 的变量提升
console.log(hoisted); // undefined
var hoisted = "我被提升了";
// 相当于:
var hoisted;
console.log(hoisted);
hoisted = "我被提升了";
// let/const 没有变量提升
// console.log(notHoisted); // ❌ 报错
let notHoisted = "我不会被提升";
5. 最佳实践
// 1. 优先使用 const
const DEFAULT_SETTINGS = {
theme: "dark",
language: "zh-CN"
};
// 2. 需要重新赋值时使用 let
let counter = 0;
counter = 1;
// 3. 避免使用 var
// ❌ 不推荐
var oldVariable = "过时写法";
// 4. 变量命名规范
const userName = "张三"; // camelCase
const MAX_SIZE = 100; // UPPER_CASE for constants
6. 特殊情况
// 未声明直接赋值(不推荐)
undeclaredVar = "我会成为全局变量"; // 严格模式下报错
// 使用严格模式
"use strict";
// undeclaredVar = "value"; // ❌ 报错
// typeof 安全检查
if (typeof someUndefinedVar !== 'undefined') {
console.log(someUndefinedVar);
}
总结
- const:优先使用,用于不会重新赋值的变量
- let:用于需要重新赋值的变量
- var:避免使用,存在作用域和提升问题
- 始终在严格模式下编写代码
- 使用有意义的变量名,遵循命名约定
挣钱养家

浙公网安备 33010602011771号