【发布时间】:2020-07-22 07:04:59
【问题描述】:
当我试图在控制台中评估这个表达式时,我得到了false,为什么?
console.log('\u{1D11E}'.charAt(0) === '\u{1D11E}')
【问题讨论】:
-
请解决您的问题。这只是一段无格式的无效语法。
-
因为charAt只能处理UTF-16,
-
因为
charAt()原本是设计为只支持BMP的,而你给的字符不属于BMP。查看this section 了解详细信息(和补救措施)。 -
这里有类似的问题:stackoverflow.com/q/46157867/3650856。您将右侧的 unicode 字符与左侧的非 unicode 字符进行比较。 charAt(0) 将分解 unicode 字符,因为它是更长的字节。因此它们的值不同,只有相同的类型。
-
@raina77ow 另一个选项是在字符串上使用
Array.from,并对其进行索引。不知道为什么 MDN 没有提到这一点。
标签: javascript unicode utf