String.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.
String
의 [@@iterator]()
메서드는 순회 프로토콜을 구현하여 전개 구문 및 for...of
루프와 같이 반복자를 기대하는 대부분의 구문에서 문자열을 사용할 수 있게 합니다. 문자열 값의 유니코드 코드 포인트를 개별 문자열로 산출하는 문자열 반복자 객체를 반환합니다.
시도해보기
구문
js
string[Symbol.iterator]()
매개변수
없음.
반환 값
문자열 값의 유니코드 코드 포인트를 개별 문자열로 산출하는 새로운 문자열 반복자 객체.
설명
문자열은 유니코드 코드 포인트로 순회됩니다. 즉, 그래프 클러스터는 분할되지만 서로게이트는 유지됩니다.
js
// "집게손가락으로 오른쪽을 가리키는 손등: 어두운 피부 톤"은
[..."👉🏿"]; // ['👉', '🏿']
// "집게손가락으로 오른쪽을 가리키는 손등" 이모지와 "어두운 피부 톤" 이모지로 분리할 수 있습니다.
// "Family: Man, Boy"
[..."👨👦"]; // [ '👨', '', '👦' ]
// "Man"과 "Boy" 이모지로 나눠지고 ZWJ로 합쳐집니다.
예제
for...of 반복를 사용한 순회
이 메서드를 직접 호출할 필요는 거의 없습니다. @@iterator
메서드가 존재하기 때문에 문자열 iterable과 for...of
같은 반복 구문은 자동으로 이 메서드를 호출하여 반복할 반복자를 얻습니다.
js
const str = "A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A";
for (const v of str) {
console.log(v);
}
// "A"
// "\uD835\uDC68"
// "B"
// "\uD835\uDC69"
// "C"
// "\uD835\uDC6A"
반복자 수동으로 돌리기
반환된 반복자 객체의 next()
메서드를 수동으로 호출하여 반복 프로세스를 최대한 제어할 수 있습니다.
js
const str = "A\uD835\uDC68";
const strIter = str[Symbol.iterator]();
console.log(strIter.next().value); // "A"
console.log(strIter.next().value); // "\uD835\uDC68"
명세서
Specification |
---|
ECMAScript Language Specification # sec-string.prototype-%symbol.iterator% |
브라우저 호환성
BCD tables only load in the browser