Guard Clause
Return sớm để tránh lồng if quá sâu:
function process(user) { if (!user) return; if (!user.active) return; // logic chính ở đây...}Control flow (luồng điều khiển) là cách JavaScript quyết định chạy lệnh nào, khi nào, và bao lâu. Mặc định, code chạy từ trên xuống dưới (tuần tự), nhưng các cấu trúc điều khiển cho phép bạn thay đổi luồng đó.
Quyết định nhánh nào sẽ chạy dựa trên điều kiện:
| Cấu trúc | Mô tả | Khi nào dùng |
|---|---|---|
if / else | Rẽ nhánh theo boolean (truthy/falsy) | Điều kiện phức tạp, ít case |
switch | Chọn nhánh theo giá trị (===) | Nhiều case rời rạc cùng 1 biến |
? : | Toán tử 3 ngôi — biểu thức | Gán giá trị theo điều kiện đơn giản |
&& || ?? | Short-circuit evaluation | Guard clauses, fallback |
Thực hiện lặp đi lặp lại cho đến khi điều kiện dừng:
| Cấu trúc | Mô tả |
|---|---|
for | Biết số lần lặp |
while | Chỉ biết điều kiện dừng |
do...while | Chạy ít nhất 1 lần |
for...of | Duyệt giá trị iterable |
for...in | Duyệt key của object |
break / continue | Điều khiển vòng lặp |
Quản lý tình huống bất thường khi chạy:
| Cấu trúc | Mô tả |
|---|---|
throw | Ném lỗi, dừng luồng bình thường |
try / catch | Bắt và xử lý lỗi |
finally | Luôn chạy sau cùng (dọn dẹp) |
Error objects | Lỗi dựng sẵn & tuỳ biến |
Code chạy tuần tự (trên → dưới) │ ├─ Rẽ nhánh? ──→ if/else, switch, ? : │ ├─ Lặp? ───────→ for, while, do...while │ ├─ Lỗi? ───────→ throw → catch → finally │ └─ Tiếp tục tuần tự...const score = 84;
if (score >= 90) { console.log("A");} else if (score >= 80) { console.log("B"); // ← chạy} else { console.log("C or below");}const role = "admin";
switch (role) { case "admin": console.log("Full access"); // ← chạy break; case "editor": console.log("Edit access"); break; default: console.log("Read only");}try { const data = JSON.parse('invalid json');} catch (e) { console.error("Lỗi:", e.message); // ← bắt lỗi} finally { console.log("Luôn chạy");}Guard Clause
Return sớm để tránh lồng if quá sâu:
function process(user) { if (!user) return; if (!user.active) return; // logic chính ở đây...}Object Lookup
Thay switch bằng object cho gọn:
const actions = { admin: () => "Full access", editor: () => "Edit access",};const result = (actions[role] ?? (() => "Read only"))();