js--值的比较
js中值得比较结果为boolean值:true或false
字符串的比较
字符串按字符逐个进行比较,使用 Unicode 编码顺序进行判定。
比较规则如下:
- 首先比较字符串首个字符大小。
- 如果一方字符较大(或较小),则该字符串大于(或小于)另一个字符串。
- 否则 取出后一位继续比较。
- 重复以上操作进行比较,直到最后一位字符。
- 如果两个字符串比较到最后一位字符同时用完,则两个字符相同,否则还没有到最后字符的字符串更大。
例如:
'abc' == 'abc' // true
'abcd' > 'abc' //true
不同类型的值比较
当对不同类型的值进行比较时,js 会首先将其转化为数字再比较大小。
'2' > 1 // true
true > '2' // fasle
相等与严格相等
== / != 在比较时会进行类型的转换。
=== / !==在比较时不会进行类型转换。也就是说只有类型和值一样,才会相同。
例如:
'1' == 1 //true
'1' === 1 //false
相等与严格相等情况下: +0与 -0 视为相等,NaN与NaN视为不等。
+0 == -0 //true
+0 === -0 //true
NaN == NaN //false
NaN === NaN // false
Object.is(val1,val2)
判断两个值是否为同一个值。
满足条件则视为相等
所以可以使用Object.is判断+0 与-0 和NaN与NaN是否相等。
Object.is(+0,-0) // false
Object.is(NaN,NaN) //true
null与undefined
在相等性检查==下 ,null 与undefined相等。
null == undefined //true
null
null > 0 //fasle
null == 0 // fasle
null >= 0 // true
在数学公式或 > < >= <=下,null 会转化为0。
ndefined 和 null 在相等性检查 == 中不会进行任何的类型转换,除了它们之间互等外,不会等于任何其他的值(在非严格相等情况下)。
undefined
undefined 不应该被与其他值进行比较。
undefined > 0 //fasle
undefined > = 0 // fasle
undefined == 0 // fasle
在数学公式或 > < >= <=下,undefined 会转化为NaN,NAN与任何值都不相等,包括自身。
在 非严格相等 ==下,undefined只与null相等,不会进行任何的类型转换。