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

时间:2013-12-12 05:14:03

标签: javascript unicode

给定两个字符串,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

是否存在不适用的情况? 如果我改变我的语言环境,它会不再适用?

1 个答案:

答案 0 :(得分:2)

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

localeCompare只有在

时真的变得有趣
  1. 您开始关注非零答案的标志(例如'á'.localeCompare('b')

  2. 或者如果您添加标记,例如不区分大小写。

  3. 仅供参考,localeCompare在不同字符串的浏览器中可能不一致。