Từ khóa const trong JavaScript
1. Từ khóa const trong JavaScript
– ECMAScript 2015 (ES2015) đã giới thiệu hai từ khóa mới quan trọng trong JavaScript là: let và const.
– Các biến được định nghĩa bởi const cũng hoạt động như các biết định nghĩa bởi let, nhưng điểm khác là không được phép gán lại giá trị.
Ví dụ:
[code language=”javascript”]// Khai báo biến hằngconst PI = 3.141592653589793;
PI = 3.14; // Error
PI = PI + 10; // Error[/code] Try it »
– Biến const JavaScript phải được gán giá trị khi chúng được khai báo:
Đúng:
[code language=”javascript”]const PI = 3.14159265359;[/code]Sai:
[code language=”javascript”]const PI;PI = 3.14159265359;[/code]
2. Phạm vi biến khi khai báo bằng const
– Khai báo một biến với const tương tự như let khi nói đến phạm vi khối (Block Scope).
– Ở ví dụ bên dưới: giá trị của biến x được khai báo trong khối (block), không giống với x được khai báo bên ngoài khối:
Ví dụ:
[code language=”javascript”]var x = 10;// Ở đây x = 10;
{
const x = 99;
// Ở đây x = 99;
}
// Ở đây x = 10;[/code] Try it »
Có thể bạn quan tâm:
– Phạm vi của biến JavaScript.
– Từ khóa let trong JavaScript.
3. Constant Objects và Constant Arrays có thể thay đổi được?
3.1. Constant Objects
– Bạn có thể thay đổi các thuộc tính (properties) của một constant object:
Ví dụ:
[code language=”javascript”]// Tạo đối tượng car:const car = {name:"Ferrari", model:"500", color:"White"};
// Thay đổi thuộc tính:
car.color = "Red";
// Thêm thuộc tính mới:
car.owner = "Minh Hoàng";[/code]
Try it »
– Nhưng KHÔNG thể gán lại một constant object:
Ví dụ:
[code language=”javascript”]const car = {name:"Ferrari", model:"500", color:"White"};car = {name:"Toyota", model:"EX60", color:"Blue"}; // Error[/code] Try it »
3.2. Constant Arrays
– Bạn có thể thay đổi các phần tử (elements) của một constant array:
Ví dụ:
[code language=”javascript”]// Tạo một mảng:const cars = ["Ford", "Volvo", "BMW"];
// Thay đổi giá trị của phần tử trong mảng:
cars[1] = "Toyota";
// Thêm phần tử mới vào mảng:
cars.push("Audi");[/code]
Try it »
– Nhưng KHÔNG thể gán lại một constant array:
Ví dụ:
[code language=”javascript”]const cars = ["Ford", "Volvo", "BMW"];cars = ["Toyota", "Ferrari", "Audi"]; // Error[/code] Try it »
4. Khai báo lại biến bằng const có được không?
– Việc khai báo lại (redeclaring) biến var JavaScript được cho phép ở bất kỳ đâu trong chương trình:
Ví dụ:
[code language=”javascript”]var x = 2; // OKvar x = 3; // OK
x = 4; // OK[/code]
– Việc khai báo lại (redeclaring) hoặc gán lại (reassigning) biến var hoặc biến let đã tồn tại thành const, trong cùng phạm vi (scope), hoặc trong cùng một khối (block) là không được phép:
Ví dụ:
[code language=”javascript”]var x = 2; // OKconst x = 2; // Error
{
let x = 2; // OK
const x = 2; // Error
}[/code]
– Việc khai báo lại (redeclaring) hoặc gán lại (reassigning) biến const đã tồn tại, trong cùng phạm vi (scope), hoặc trong cùng một khối (block) là không được phép:
Ví dụ:
[code language=”javascript”]const x = 2; // OKconst x = 3; // Error
x = 3; // Error
var x = 3; // Error
let x = 3; // Error
{
const x = 2; // OK
const x = 3; // Error
x = 3; // Error
var x = 3; // Error
let x = 3; // Error
}[/code]
– Việc khai báo lại (redeclaring) một biến bằng từ khóa const, trong một phạm vi (scope) khác, hoặc trong một khối (block) khác là được phép
Ví dụ:
[code language=”javascript”]const x = 2; // OK{
const x = 3; // OK
}
{
const x = 4; // OK
}[/code]
5. Const và Hoisting
– Các biến được định nghĩa với var được hoisted lên trên cùng.
– Bạn có thể sử dụng biến var trước khi nó được khai báo:
Ví dụ:
[code language=”javascript”]carName = "Toyota";// CÓ THỂ sử dụng biến carName tại đây
// Khai báo biến var
var carName;[/code]
Try it »
– Các biến được định nghĩa với const KHÔNG được hoisted lên trên cùng.
– Do đó, KHÔNG thể sử dụng biến const trước khi nó được khai báo:
Ví dụ:
[code language=”javascript”]carName = "Toyota";// KHÔNG THỂ sử dụng biến carName tại đây
// Khai báo biến const
const carName = "Toyota";[/code]
Try it »
Xem thêm: Khái niệm Hoisting trong JavaScript.
[…] – Đối với biến khai báo bằng từ khóa let hoặc const thì sẽ không được Hoisted. – Chi tiết xem thêm: Từ khóa let | Từ khóa const. […]
[…] trời” mà nó chưa được khai báo bằng 1 trong các từ khóa như var, let, hay const rồi gán giá trị cho nó, thì biến đó sẽ được JavaScript hiểu là 1 biến toàn […]
[…] ta sẽ cùng điểm qua 2 định nghĩa của Constant và Literal để hiểu thêm về […]