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 2015ë 9ì.
Stringì [@@iterator]() ë©ìëë ìí íë¡í ì½ì 구ííì¬ ì ê° êµ¬ë¬¸ ë° for...of 루íì ê°ì´ ë°ë³µì를 기ëíë ëë¶ë¶ì 구문ìì 문ìì´ì ì¬ì©í ì ìê² í©ëë¤. 문ìì´ ê°ì ì ëì½ë ì½ë í¬ì¸í¸ë¥¼ ê°ë³ 문ìì´ë¡ ì°ì¶íë 문ìì´ ë°ë³µì ê°ì²´ë¥¼ ë°íí©ëë¤.
ìëí´ ë³´ê¸°
const str = "The quick red fox jumped over the lazy dog's back.";
const iterator = str[Symbol.iterator]();
let theChar = iterator.next();
while (!theChar.done && theChar.value !== " ") {
console.log(theChar.value);
theChar = iterator.next();
// Expected output: "T"
// "h"
// "e"
}
구문
string[Symbol.iterator]()
매ê°ë³ì
ìì.
ë°í ê°
문ìì´ ê°ì ì ëì½ë ì½ë í¬ì¸í¸ë¥¼ ê°ë³ 문ìì´ë¡ ì°ì¶íë ìë¡ì´ 문ìì´ ë°ë³µì ê°ì²´.
ì¤ëª
문ìì´ì ì ëì½ë ì½ë í¬ì¸í¸ë¡ ìíë©ëë¤. ì¦, ê·¸ëí í´ë¬ì¤í°ë ë¶í ëì§ë§ ìë¡ê²ì´í¸ë ì ì§ë©ëë¤.
// "ì§ê²ìê°ë½ì¼ë¡ ì¤ë¥¸ìª½ì ê°ë¦¬í¤ë ìë±: ì´ëì´ í¼ë¶ í¤"ì
[..."ðð¿"]; // ['ð', 'ð¿']
// "ì§ê²ìê°ë½ì¼ë¡ ì¤ë¥¸ìª½ì ê°ë¦¬í¤ë ìë±" ì´ëª¨ì§ì "ì´ëì´ í¼ë¶ í¤" ì´ëª¨ì§ë¡ ë¶ë¦¬í ì ììµëë¤.
// "Family: Man, Boy"
[..."ð¨âð¦"]; // [ 'ð¨', 'â', 'ð¦' ]
// "Man"ê³¼ "Boy" ì´ëª¨ì§ë¡ ëë ì§ê³ ZWJë¡ í©ì³ì§ëë¤.
ìì
>for...of ë°ë³µë¥¼ ì¬ì©í ìí
ì´ ë©ìë를 ì§ì í¸ì¶í íìë ê±°ì ììµëë¤. @@iterator ë©ìëê° ì¡´ì¬í기 ë문ì 문ìì´ iterableê³¼ for...of ê°ì ë°ë³µ 구문ì ìëì¼ë¡ ì´ ë©ìë를 í¸ì¶íì¬ ë°ë³µí ë°ë³µì를 ì»ìµëë¤.
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() ë©ìë를 ìëì¼ë¡ í¸ì¶íì¬ ë°ë³µ íë¡ì¸ì¤ë¥¼ ìµëí ì ì´í ì ììµëë¤.
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® 2027 Language Specification> # sec-string.prototype-%symbol.iterator%> |