JavaScript 变量声明
在 JavaScript 中,变量就像一个个容器,用来存储代码需要处理的数据。
变量声明
我们使用 var
、let
或 const
来声明变量。它们之间有什么区别呢?
var
: 这是最“古老”的声明方式,可以声明全局变量和局部变量。但var
声明的变量存在变量提升的特性,有时会带来意外的结果。let
: 这是 ECMAScript 6 (ES6) 引入的新关键字,用于声明块级作用域的变量。这意味着let
声明的变量只能在声明它的代码块中使用,更加安全和易于维护。const
: 用于声明常量,顾名思义,常量的值在初始化后就不能再改变了。const
也拥有块级作用域。
var globalVar = "我是全局变量"; // 可以被任何代码访问
function myFunction() {
let localVar = "我是局部变量"; // 只能在函数内部访问
console.log(localVar);
if (true) {
const blockConst = "我是块级常量"; // 只能在这个代码块中访问
console.log(blockConst);
}
// console.log(blockConst); // 这行会报错,因为 blockConst 超出了作用域
}
myFunction();
变量命名
为了避免代码混乱,JavaScript 对变量命名制定了一些规则:
- 必须以字母、下划线 (
_
) 或美元符号 ($
) 开头。 - 后续字符可以是字母、数字、下划线或美元符号。
- 区分大小写,
myVar
和myvar
是两个不同的变量。 - 不能使用 JavaScript 关键字作为变量名,例如
if
、else
、for
等。
变量赋值
声明变量后,我们需要使用赋值运算符 (=
) 为其赋值:
let message = "Hello, world!"; // 声明变量 message 并赋值为字符串 "Hello, world!"
const PI = 3.1415926; // 声明常量 PI 并赋值
变量作用域
- 全局变量: 在函数外部声明的变量,可以在代码的任何地方访问。
- 局部变量: 在函数内部声明的变量,只能在函数内部访问。
var globalVar = "我是全局变量";
function myFunction() {
let localVar = "我是局部变量";
console.log(globalVar); // 可以访问全局变量
console.log(localVar); // 可以访问局部变量
}
myFunction();
// console.log(localVar); // 这行会报错,因为 localVar 超出了作用域
变量提升
var
声明的变量会发生“变量提升”现象。 JavaScript 引擎会在执行代码之前,将所有 var
声明的变量提升到当前作用域的顶部。 这意味着我们可以在声明变量之前使用它,但此时它的值是 undefined
。
console.log(x); // 输出 undefined
var x = 10;
为了避免 confusion,建议始终先声明变量,再使用它。 let
和 const
虽然也会提升,但不会被初始化,在声明之前访问会抛出错误。
常量:不可更改的值
使用 const
声明的常量,其值在初始化后就不能再被修改:
const PI = 3.14159;
PI = 3.14; // 这行会报错,因为常量不能被重新赋值