字符串的遍历器接口

ES6 为字符串添加了遍历器接口(详见《Iterator》一章),使得字符串可以被for...of循环遍历。

  1. for (let codePoint of 'foo') {
  2. console.log(codePoint)
  3. }
  4. // "f"
  5. // "o"
  6. // "o"

除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点。

  1. let text = String.fromCodePoint(0x20BB7);
  2. for (let i = 0; i < text.length; i++) {
  3. console.log(text[i]);
  4. }
  5. // " "
  6. // " "
  7. for (let i of text) {
  8. console.log(i);
  9. }
  10. // "𠮷"

上面代码中,字符串text只有一个字符,但是for循环会认为它包含两个字符(都不可打印),而for...of循环会正确识别出这一个字符。