Set.prototype[@@iterator]()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Set 객체의 @@iterator 메서드는 Iteration 프로토콜을 구현하며, 전개 구문for...of 루프와 같이 순회를 예상하는 대부분의 구문에서 Set을 사용할 수 있도록 합니다. Set의 값을 산출하는 반복자를 반환합니다.

이 속성의 초기 값은 Set.prototype.values 속성의 초기 값과 동일한 함수 객체입니다.

시도해보기

구문

js
set[Symbol.iterator]()

반환 값

Set.prototype.values()와 동일하게 set의 값을 산출하는 새로운 반복 가능한 반복자 객체를 반환합니다.

예제

for...of 루프를 사용한 반복

이 메서드를 직접 호출할 필요는 거의 없습니다. @@iterator 메서드의 존재는 Set 객체가 반복 가능하게 해주며, for...of 루프와 같은 반복 구문은 이 메서드를 자동으로 호출하여 루프를 돌릴 반복자를 얻게 됩니다.

js
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});
for (const v of mySet) {
  console.log(v);
}

반복자 수동으로 돌리기

반환된 반복자 객체의 next() 메서드를 수동으로 호출하여 반복 프로세스를 최대한 제어할 수 있습니다.

js
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});

const setIter = mySet[Symbol.iterator]();
console.log(setIter.next().value); // "0"
console.log(setIter.next().value); // 1
console.log(setIter.next().value); // Object

명세서

Specification
ECMAScript Language Specification
# sec-set.prototype-@@iterator

브라우저 호환성

BCD tables only load in the browser

같이 보기