字符串的遍历器接口

字符串的遍历器接口 #

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

(function (log, S) {
    for (let codePoint of 'foo') {
        log(codePoint)
    }
    // "f"
    // "o"
    // "o"
})(console.log, String)

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

(function (log, S) {
    const text = String.fromCodePoint(0x20BB7);

    for (let i = 0; i < text.length; i++) {
      log(text[i]);
    }
    // �
    // �

    for (let i of text) {
      log(i);
    }
    // "𠮷"
})(console.log, String)

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


Build by Loppo 0.6.16