Luồng điều khiển
Vòng lặp For
Vòng lặp for kiểu C của JavaScript so với Go (for kiểu C + range-over-int từ 1.22), Java (giữ for kiểu C) và Rust/Swift (không có for kiểu C, chỉ có range).
- Phiên bản tối thiểu
- Node.js ≥ 12.20Go ≥ 1.22Rust ≥ 1.58Swift ≥ 2.0Java ≥ 25
- Đã chạy thử trên
- Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1
Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.
Go giữ nguyên vòng for kiểu C ba phần (init; condition; post) giống JavaScript. Go không có while hay do-while riêng — for là từ khoá lặp duy nhất, và từ Go 1.22 nó còn có thêm cách viết range để lặp một số lần cố định. Rust chưa từng có for kiểu C — range (0..6) là cách duy nhất từ Rust 1.0. Swift từng có for kiểu C nhưng đã bỏ hẳn từ Swift 3.0 (SE-0007), cũng chuyển sang dùng range. Java thì vẫn giữ for kiểu C y hệt JavaScript.
Vòng lặp kiểu C và range-over-int
for (let i = 0; i <= 5; i++) {
console.log(i)
}package main
import "fmt"
func main() {
for i := 0; i <= 5; i++ {
fmt.Println(i)
}
// range trên một số nguyên để lặp một số lần cố định
for i := range 6 {
fmt.Println(i)
}
}fn main() {
for i in 0..=5 {
println!("{i}");
}
// Rust không có for kiểu C ba phần — range là cách duy nhất để lặp một số lần cố định,
// và đã có từ Rust 1.0 (Go chỉ mới thêm range-over-int từ 1.22)
for i in 0..6 {
println!("{i}");
}
}for i in 0...5 {
print(i)
}
// Swift bỏ hẳn for kiểu C từ Swift 3.0 (SE-0007) — range là cách lặp chuẩn,
// tương tự range-over-int mà Go chỉ mới thêm từ 1.22
for i in 0..<6 {
print(i)
}void main() {
for (int i = 0; i <= 5; i++) {
IO.println(i);
}
// Java không có cú pháp range-over-int như Go 1.22+; gần nhất là IntStream.range(...)
IntStream.range(0, 6).forEach(IO::println);
}# Node.js
0
1
2
3
4
5
# Go / Rust / Swift / Java
0
1
2
3
4
5
0
1
2
3
4
5Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#for