Có 2 phong cách khai báo nhiều biến. Phong cách mỗi biến một dòng (one per line) được khuyến nghị cho code hiện đại vì dễ bảo trì, dễ review, ít conflict khi merge git.
Phong cách 1: Mỗi biến một dòng (Khuyến nghị ✅)
let variable1 = 5;
let variable2 = 3.6;
let variable3 = "Amit";
Ưu điểm:
- Dễ thêm/xóa/sửa biến riêng lẻ.
- Git diff rõ ràng: thay đổi 1 dòng = thay đổi 1 biến.
- Dễ comment cho từng biến.
- Dễ debug (breakpoint trên từng dòng).
- Tránh lỗi thiếu dấu phẩy/comma.
- Hỗ trợ
constcho từng biến riêng biệt.
Phong cách 2: Nhiều biến một dòng (Chained declaration)
let variable1 = 5, variable2 = 3.6, variable3 = "Amit";
Nhược điểm:
- Xóa biến giữa → phải sửa dấu phẩy, dễ quên
let/constcho biến tiếp theo. - Git diff nhiễu: 1 dòng thay đổi = nhiều biến.
- Khó comment cho từng biến.
- Dễ mắc lỗi:
let a = 1, b = 2; c = 3(thiếu let cho c → global leak). - Không thể mix
constvàlet.
So sánh chi tiết
| Tiêu chí | One per line | Chained |
|---|---|---|
| Đọc/hiểu | Dễ | Khó (dòng dài) |
| Git diff/merge | Sạch | Nhiễu, conflict dễ |
| Refactor (thêm/xóa/sửa) | Dễ | Rủi ro |
| Debug breakpoint | Từng biến | Cả nhóm |
| Mix const/let | Được | Không được |
| Comment per variable | Được | Khó |
Ví dụ thực tế: Config object (Thay vì nhiều biến)
// Thay vì:
const apiUrl = "/api";
const timeout = 5000;
const retries = 3;
const cacheEnabled = true;
// Nên gom thành object config
const config = {
apiUrl: "/api",
timeout: 5000,
retries: 3,
cacheEnabled: true
};
// Hoặc dùng destructuring khi cần
const { apiUrl, timeout } = config;
Destructuring Declaration (ES6) – Khai báo nhiều từ object/array
// Từ object
const { name, age, email } = user;
// Từ array
const [first, second, ...rest] = items;
// Đổi tên khi destructuring
const { name: userName, age: userAge } = user;
Linting Rules (ESLint)
one-var: ["error", "never"]– Cấm chained declaration.prefer-const– Yêu cầu const khi không gán lại.no-unused-vars– Báo biến khai báo không dùng.
Tóm tắt
- Best Practice: Mỗi biến một dòng, dùng
constmặc định,letkhi cần gán lại. - Tránh chained declaration (
let a=1, b=2). - Gom biến liên quan thành object/config.
- Dùng destructuring để khai báo nhiều từ object/array.
- Bật ESLint
one-var: neverđể enforce.