Nhảy tới nội dung

Khai báo biến: let và const

Variable declaration trong JavaScript có letconst.

Khai báo biến với let

Cách viết khai báo biến bằng let như sau.

ts
let x = 1;
ts
let x = 1;

let cho phép gán lại giá trị.

ts
let x = 1;
x = 2; // Có thể gán lại
ts
let x = 1;
x = 2; // Có thể gán lại

let có thể định nghĩa biến không có giá trị khởi tạo. Giá trị của biến không có giá trị khởi tạo là undefined.

js
let x; // Không có giá trị khởi tạo
x = 1; // Gán sau
js
let x; // Không có giá trị khởi tạo
x = 1; // Gán sau

Khai báo biến với const

Cách viết khai báo biến bằng const như sau. Giá trị khởi tạo là bắt buộc.

js
const y = 2;
js
const y = 2;

const không cho phép gán lại giá trị cho biến.

js
const y = 1;
y = 1;
TypeError: Assignment to constant variable.
js
const y = 1;
y = 1;
TypeError: Assignment to constant variable.

Phân biệt cách dùng let và const

Khi lần đầu viết JavaScript, có thể phân vân nên dùng let hay const để khai báo biến. Khuyến nghị là cơ bản dùng const để khai báo biến, chỉ dùng let khi cần thiết. Khai báo biến bằng const ngăn chặn việc gán lại, tránh việc biến bị thay đổi ngoài ý muốn, giúp code an toàn hơn.

Chia sẻ kiến thức

・Variable declaration trong JavaScript có let và const
・let cho phép gán lại, const không cho phép gán lại
・Cơ bản nên dùng const

Từ 『Survival TypeScript』

Đăng nội dung này lên X

const không bảo vệ mutable object

const chỉ khai báo tên biến không thể gán lại. const không có hiệu quả bảo vệ khiến property của mutable object trở nên immutable. Điểm này thường bị hiểu lầm.

Ví dụ, khi khai báo object bằng const, không thể gán lại cho bản thân biến. Tuy nhiên có thể thay đổi object property.

ts
const obj = { a: 1 };
obj = { a: 2 }; // Không thể gán lại
Cannot assign to 'obj' because it is a constant.2588Cannot assign to 'obj' because it is a constant.
obj.a = 2; // Có thể thay đổi property
ts
const obj = { a: 1 };
obj = { a: 2 }; // Không thể gán lại
Cannot assign to 'obj' because it is a constant.2588Cannot assign to 'obj' because it is a constant.
obj.a = 2; // Có thể thay đổi property

Để làm object immutable trong TypeScript, cần đặt property thành read-only.

📄️ Readonly property của object type

Trong TypeScript, có thể đặt property của object thành read-only. Thêm modifier readonly vào property muốn đặt thành read-only. Khi cố gán giá trị cho property read-only, TypeScript compiler sẽ cảnh báo không thể gán.

Array cũng là một loại object nên tương tự. Không thể gán lại cho bản thân biến. Tuy nhiên có thể thay đổi element của array.

ts
const arr = [1, 2];
arr = [3, 4]; // Không thể gán lại
Cannot assign to 'arr' because it is a constant.2588Cannot assign to 'arr' because it is a constant.
arr.push(3); // Có thể thay đổi element
ts
const arr = [1, 2];
arr = [3, 4]; // Không thể gán lại
Cannot assign to 'arr' because it is a constant.2588Cannot assign to 'arr' because it is a constant.
arr.push(3); // Có thể thay đổi element

Để làm array immutable trong TypeScript cần dùng read-only array.

📄️ Read-only array

Trong TypeScript, có thể type annotation cho array là read-only (readonly). Có 2 cách type annotation. Cách thứ nhất là sử dụng từ khóa readonly. Cách thứ hai là sử dụng ReadonlyArray.

Cũng có phương pháp làm object hoặc array immutable bằng const assertion.

📄️ Const assertion "as const"

Khi khai báo biến, thêm as const vào cuối sẽ làm cho giá trị đó thành readonly và chuyển thành literal type.