ES6(ECMAScript 2015)引入了const
关键字,用于声明常量。在JavaScript中,常量是指其值在声明后不能被重新赋值的变量。const
声明的常量具有以下特点:
- 常量值不能被重新赋值:一旦用
const
声明一个常量并初始化赋值,就不能再改变其值。任何尝试重新赋值的操作都会导致语法错误。 - 块级作用域:
const
具有块级作用域,类似于let
关键字。常量在声明的块(如函数内部或语句块)中是可见的,而在块之外是不可见的。 - 重复声明不允许:在同一个作用域中,不允许重复声明已经存在的常量。如果尝试重复声明,将会抛出一个语法错误。
- 必须初始化:
const
声明的常量在声明时必须进行初始化赋值。否则,会抛出一个语法错误。
下面是关于const
的详细文档,以及一些示例来帮助理解:
const
的语法:
const variableName = value;
variableName
是常量的名称,可以是任意合法的标识符。value
是常量的初始值,可以是任何合法的JavaScript表达式。
特点示例:
常量声明与赋值:
代码语言:javascript复制const PI = 3.14159;
在上面的示例中,我们声明了一个名为PI
的常量,并将其初始化为3.14159。一旦初始化后,PI
的值不能再改变。
常量的块级作用域:
代码语言:javascript复制function calculateArea() {
const width = 10;
if (true) {
const height = 20;
const area = width * height;
console.log(area); // 输出200
}
console.log(width); // 输出10
console.log(height); // 抛出ReferenceError: height未定义
}
calculateArea();
在上面的示例中,我们在calculateArea
函数内部使用了const
关键字声明了width
和height
常量。在if
语句块内部,我们可以访问和使用width
和height
常量。然而,一旦我们离开了if
语句块,尝试访问height
常量将导致ReferenceError
,因为它的作用域仅限于if
语句块。
重复声明常量会引发错误:
代码语言:javascript复制const value = 10;
const value = 20; // 抛出SyntaxError: 标识符'value'已经被声明
在上面的示例中,我们尝试使用相同的常量名称value
进行重复声明,这将导致一个语法错误。每个常量名称在同一作用域中只能声明一次。
常量必须初始化:
代码语言:javascript复制const name; // 抛出SyntaxError: 常量声明缺少初始化
在上面的示例中,我们没有给name
常量提供初始值,这将导致一个语法错误。使用const
声明常量时,必须在声明时进行初始化。