对于JS字符串,a.localeCompare(b) === 0是否总是等同于a === b?

3

给定两个字符串,localeCompare方法在进行相等比较时,是否总是与三个等号(===)的结果相同?

对于中文字符和高位字符似乎没有问题。

function compareEm(a,b) {
    if (a === b != a.localeCompare(b) === 0) {
        console.log(a, b, a === b, a.localeCompare(b))
    }
}

compareEm('\u6f22', "漢") // no output
compareEm('', "\uD83D\uDCA9") // no output

这个结论是否存在不适用的情况?如果我更改我的语言环境,它是否不再适用?


是的,它们应该始终保持一致。 - Kevin Ji
1个回答

2

a.localeCompare(b) === 0 相当于 a === b

只有在以下两种情况下,localeCompare 才真正变得有趣:

  1. 你开始关注非零答案的符号(例如 'á'.localeCompare('b')

  2. 或者你添加标志,例如不区分大小写。

请注意,localeCompare 对于不相等的字符串在不同浏览器中可能会不一致。


是的,灵敏度标志似乎使它们不同。很高兴听到没有任何标志它们始终相同。谢谢。 - Adam A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接