1. const的基本用法
在Javascript中,const是一个常用的关键字,用于声明常量。与之类似的关键字包括let和var。
const的基本语法如下:
const constantName = "value";
代码中,constantName是常量的名称,它的值被初始化为"value",这个值不能被改变。
使用const声明的变量只能在声明时被初始化一次。这意味着在之后的代码中不能再对它进行赋值,也不能将其重新声明为一个新的变量。
以下的示例代码演示了如何使用const声明一个常量:
const PI = 3.141592653589793;
console.log(PI); // 3.141592653589793
PI = 42; //TypeError: Assignment to constant variable.
在这个例子中,我们声明了一个名为PI的常量,并将其初始化为数值3.141592653589793。我们尝试改变PI的值,但是会引发TypeError错误。
2. const与let的区别
2.1 变量作用域
在Javascript中,let关键字用于声明一个块作用域的变量,其作用域是指在声明它的代码块内部,包括嵌套的代码块。
相反,用const声明的变量则不能重新赋值,但它们仍然具有与let关键字相同的作用域规则。
以下示例代码演示了使用let和const声明变量的作用域规则:
function exampleScope() {
let x = 1;
const y = 2;
if (true) {
let x = 3;
const y = 4;
console.log("x in if statement: ", x); // 3
console.log("y in if statement: ", y); // 4
}
console.log("x outside if statement: ", x); // 1
console.log("y outside if statement: ", y); // 2
}
exampleScope();
在这个示例代码中,我们在函数exampleScope中声明了两个变量x和y。在if语句中,我们又声明了两个同名变量x和y。
由于let关键字声明的变量具有块级作用域,因此if语句中声明的变量只在该块内有效。由此产生的输出是:
x in if statement: 3
y in if statement: 4
x outside if statement: 1
y outside if statement: 2
由于const关键字声明的变量不能被重新赋值,因此在if语句中赋值给y会导致TypeError。
function exampleScope() {
let x = 1;
const y = 2;
if (true) {
let x = 3;
const y = 4;
console.log("x in if statement: ", x); // 3
y = 5;
console.log("y in if statement: ", y); // TypeError
}
console.log("x outside if statement: ", x); // 1
console.log("y outside if statement: ", y); // 2
}
exampleScope();
运行代码会发现,TypeError被抛出了。
2.2 变量声明提升
类似于使用var关键字声明变量时的行为,let关键字声明的变量和函数名会被提升到块的顶部。但是使用const声明的变量不会被提升。
以下示例代码演示了它们之间的不同点:
function exampleHoisting() {
console.log(x); // ReferenceError: x is not defined.
console.log(y); // ReferenceError: y is not defined.
let x = 1;
const y = 2;
}
exampleHoisting();
不像使用var关键字时x值被赋予了undefined值,这里使用let关键字声明的变量x会引发ReferenceError。而使用const声明的变量y则会引发同样的错误。
3. 常量数组和对象
虽然使用const关键字声明的变量不能被重新赋值,但是我们仍然可以改变它们所包含的对象或数组的内容。
3.1 常量数组
以下示例代码演示了如何创建一个常量数组:
const fruits = ["apple", "banana", "orange"];
console.log(fruits); // ["apple", "banana", "orange"]
虽然我们不能使用以下代码重写整个数组:
fruits = ["pear", "grape"];
console.log(fruits); // TypeError: Assignment to constant variable.
但我们可以改变数组中单个元素的值:
fruits[0] = "pear";
console.log(fruits); // ["pear", "banana", "orange"]
上述代码演示了使用const关键字创建一个常量数组,并更改其第一个元素的值。
3.2 常量对象
以下示例代码演示了如何创建一个常量对象:
const person = {
name: "Alice",
age: 30
};
console.log(person); // {name: "Alice", age: 30}
虽然我们不能使用以下代码重写整个对象:
person = {
name: "Bob",
age: 40
};
console.log(person); // TypeError: Assignment to constant variable.
但我们可以改变对象中的属性:
person.name = "Bob";
console.log(person); // {name: "Bob", age: 30}
上述代码演示了使用const关键字创建一个常量对象,并更改其name属性的值。
4. 总结
在Javascript中,使用const关键字可以声明一个常量,其值在声明时被初始化,不能被重新赋值。可以将常量声明为数组或对象。使用const关键字声明的变量仍然遵循与使用let关键字声明的变量相同的作用域规则,也面临着变量提升问题。
在编写Javascript代码时,还需要注意命名约定。常量的名称通常用全大写字母命名。