Nâng CaoJavaScript iconJavaScript

Symbol.iterator và iterable protocol là gì?

Iterable protocol yêu cầu object có method Symbol.iterator trả về iterator object (có next() trả về {value, done}).

Arrays, Strings, Maps, Sets implement sẵn. Custom iterables cho phép dùng for...of, spread, destructuring. Generator functions tự động tạo iterable.

javascript
class Range {
  constructor(start, end) { this.start = start; this.end = end; }
  [Symbol.iterator]() {
    let current = this.start;
    const end = this.end;
    return {
      next() {
        return current <= end
          ? { value: current++, done: false }
          : { value: undefined, done: true };
      }
    };
  }
}
for (const n of new Range(1, 3)) console.log(n); // 1, 2, 3

Xem toàn bộ JavaScript cùng filter theo level & chủ đề con.

Mở danh sách JavaScript