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
循环会正确识别
出这一个字符
。