Thực tế
goto là từ khóa dự trữ (reserved keyword) trong JS – không thể dùng làm tên biến, nhưng không được triển khai.
Tại sao không có?
- Gây spaghetti code – luồng điều khiển nhảy lộn xộn, khó đọc, khó debug, khó bảo trì.
- Cấu trúc hiện đại (
if/else,for/while,function,try/catch,break/continue label) đủ thay thế mọi trường hợp. - Web standards và best practices khuyến cáo tránh.
Mô phỏng goto (chỉ lý thuyết, KHÔNG dùng thực tế)
// Ý tưởng preprocessing
var a = 0;
[lbl] beginning:
console.log("Demo!");
a++;
if (a < 424) goto beginning;
// Biên dịch thành while + continue
var a = 0;
beginning: while (true) {
console.log("Demo!");
a++;
if (a < 424) continue beginning;
break;
}
Thay thế goto bằng gì?
| Mục đích goto | Thay thế JS |
|---|---|
| Lặp vô tận | while(true) + break |
| Nhảy ra nhiều cấp loop | break label hoặc tách function + return |
| Bỏ qua phần code | continue, if guard, tách hàm |
| State machine | switch trên state variable |
| Error handling | try/catch/finally |
Kết luận
Đừng bao giờ cố dùng goto trong JS. Hãy thành thạo các cấu trúc điều khiển có sẵn.