skip to content

JavaScript
字符串的比较

初次碰到 '100' > '99' 这个问题的时候还是有点懵逼的,因为这种比较也不涉及之前所想的隐式类型转换,

通过几次试验,发现 JS 中字符串与字符串比较是根据第一个不同的字符的 ASCii 值码进行比较的。

举个例子

'100' > '99'
// 1. '100'.charCodeAt(0) === 49
// 2. '99'.charCodeAt(0) === 57
// 3. 49 < 57 所以结果为 false

在来一个有隐式转换的例子

['100'] > 99
// 1. 对象类型与其他类型比较 对象类型会转换为原始值 ['100'] ==> '100'
// 2. 字符串与数字类型比较,字符串会变为数字 '100' ==> 100
// 3. 100 > 99 所以结果为 true