for...of 循环含有辅助平面字符的字符串,输出让我感到困惑

发布于 2022-09-13 00:15:37 字数 46 浏览 16 评论 0

代码

let count = 0,
s = "

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

无边思念无边月 2022-09-20 00:15:37

Javascript 采用 Unicode字符集,在 UTF-16 之前使用的是 UCS-2 编码,该编码方法使用2个字节表示字符(基本平面字符)。

UTF-16 编码发布后,UCS-2 被整合进 UTF-16,基本平面字符仍用2个字节,辅助平面字符使用4个字节表示。

因此,Javascript 的字符操作函数在处理4个字节的字符时,会当成两个双字节的字符处理,从而无法返回正确的结果。

s.slice(0, 1) // �
s.substr(0, 1) // �
s.charAt(0) // \uD842

"

沫尐诺 2022-09-20 00:15:37

for ... of 循环依赖于迭代器Iterator的实现,和[..."

迟月 2022-09-20 00:15:37

编码问题 for of es6新增的能正确识别

const a = s.charAt(0)
const b = s.charCodeAt(0)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文