当我尝试在控制台中评估此表达式时,结果为false,为什么?

console.log('\u{1D11E}'.charAt(0) === '\u{1D11E}')

最佳答案

一个简单的console.log会向您显示问题

console.log('\u{1D11E}'.charAt(0))
console.log('\u{1D11E}')
console.log('\u{1D11E}'.charAt(0) === '\u{1D11E}')

如您所见,它们没有给出相同的结果,这是因为charAt仅处理 UTF-16 code units。有关如何处理UTF-16字符的信息,请参见同一源上的代码片段(也适用于其他平面,因此代码点> 65535)。

09-18 18:44