js-- 值的比较

250 阅读2分钟

js--值的比较

js中值得比较结果为boolean值:true或false

字符串的比较

字符串按字符逐个进行比较,使用 Unicode 编码顺序进行判定。

比较规则如下:

  1. 首先比较字符串首个字符大小。
  2. 如果一方字符较大(或较小),则该字符串大于(或小于)另一个字符串。
  3. 否则 取出后一位继续比较。
  4. 重复以上操作进行比较,直到最后一位字符。
  5. 如果两个字符串比较到最后一位字符同时用完,则两个字符相同,否则还没有到最后字符的字符串更大。

例如:

 '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

在相等性检查==下 ,nullundefined相等。

null == undefined  //true

null

null > 0 //fasle
null == 0 // fasle
null >= 0  // true

在数学公式或 > < >= <=下,null 会转化为0。

ndefinednull 在相等性检查 == 中不会进行任何的类型转换,除了它们之间互等外,不会等于任何其他的值(在非严格相等情况下)。

undefined

undefined 不应该被与其他值进行比较。

undefined > 0    //fasle
undefined > = 0   // fasle
undefined == 0      // fasle

在数学公式或 > < >= <=下,undefined 会转化为NaN,NAN与任何值都不相等,包括自身。

在 非严格相等 ==下,undefined只与null相等,不会进行任何的类型转换。