- Iterator: một object có method
next()trả về{ value, done }. Một object iterable có[Symbol.iterator]()trả về iterator → dùng được vớifor...of, spread[...x], destructuring. - Generator — hàm khai báo bằng
function*: cách viết iterator gọn hơn. Từ khóayieldtạm dừng hàm và trả ra một giá trị, giữ nguyên trạng thái cục bộ giữa các lần gọinext().
Điểm mạnh: sinh giá trị lazy (theo yêu cầu) → hợp với chuỗi vô hạn, phân trang, hoặc xử lý stream lớn mà không nạp toàn bộ vào bộ nhớ.
yield*ủy quyền cho một iterable khác.- Là nền tảng cho async iterator dùng với
for await...of.