【发布时间】:2017-03-10 02:02:54
【问题描述】:
考虑到charAt()、charCodeAt() 和codePointAt(),我发现参数含义之间存在差异。在我真正考虑之前,我认为您始终可以安全地访问length-1 的角色。但是我读到 charCodeAt() 和 codePointAt() 之间的区别在于 charCodeAt() 指的是 16 位(字节对),所以除了阅读 i 之外,如果它们是代理对,您还需要 i+1(方法也是如此)使用 UTF-16)。而 codePointAt() 需要一个引用 UTF-8 字符位置的参数(从零开始)。所以现在我很困惑length 是计算字符数还是UTF-16 样式的字节对数。我相信 JavaScript 将字符串保存为 UTF-16,但是使用 length-1 来自具有大量 4 字节字符的字符串和 codePointAt() 函数将不在字符串的末尾!!
【问题讨论】:
-
字符串可以是任意长度,只要有足够的内存。
标签: javascript arrays utf-8 utf-16