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ụ:
// Khai báo biến hằng const PI = 3.141592653589793; PI = 3.14; // Error PI = PI + 10; // ErrorTry it »
– Biến const JavaScript phải được gán giá trị khi chúng được khai báo:
Đúng:
const PI = 3.14159265359;
Sai:
const PI; PI = 3.14159265359;
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:
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ụ:
// 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";Try it »
– Nhưng KHÔNG thể gán lại một constant object:
Ví dụ:
const car = {name:"Ferrari", model:"500", color:"White"}; car = {name:"Toyota", model:"EX60", color:"Blue"}; // ErrorTry 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ụ:
// 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");Try it »
– Nhưng KHÔNG thể gán lại một constant array:
Ví dụ:
const cars = ["Ford", "Volvo", "BMW"]; cars = ["Toyota", "Ferrari", "Audi"]; // ErrorTry 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ụ:
var x = 2; // OK var x = 3; // OK x = 4; // OK
– 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ụ:
var x = 2; // OK const x = 2; // Error { let x = 2; // OK const x = 2; // Error }
– 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ụ:
const x = 2; // OK const 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 }
– 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ụ:
const x = 2; // OK { const x = 3; // OK } { const x = 4; // OK }
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ụ:
carName = "Toyota"; // CÓ THỂ sử dụng biến carName tại đây // Khai báo biến var var carName;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ụ:
carName = "Toyota"; // KHÔNG THỂ sử dụng biến carName tại đây // Khai báo biến const const carName = "Toyota";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ề […]