比较运算符

作者: 5cc9c8608284 | 来源:发表于2022-08-03 12:03 被阅读0次

比较运算符

大小比较:> < >= <=
相等比较:== != === !==

比较运算符的返回值类型:Boolean

console.log(6>5)//true
console.log(6<5)//false

算数运算符的优先级高于比较运算符

 console.log(2+3>=5)//true,这里先计算了2+3=5,然后才进行比较

大小比较

两个字符串比较大小,比较的是字符串的字符编码。

在计算机中,每一个字符都有一个编码,计算机不能保存文字,只能保存纯数字,每一个文字都有一个对应的数字,所以当我们比较两个字符串时,计算机内部其实比较的是字符串对应的字符编码

    console.log('A'>'B')//false ,这里比较的时候A对应的字符编码为65,而B对应的字符编码为66,所以结果返回false
    console.log('AB'>'AC')//false,首先比较第一个字符,结果是相等的,然后比较第二个字符,C的字符编码是大于B的,所以结果为false
    console.log('1'>'2')//false,1对应的字符编码为49,2对应的字符编码为50,所以结果为false
    console.log('11'>'2')//false,字符串在进行大小比较的时候,先比较第一个字符,如果第一个字符相等,则继续向后面进行比较,如果第一个字符不相等,则直接返回比较结果,所以这里的结果仍然是false
    console.log('11'>'1')//true,这里比较的时候第一个字符是相等的,会继续向后进行比较,而第二个字符串只有一个字符,那么js会认为其他位置为0,所以结果就返回了true

细节

1.如果一个不是字符串,并且两个都是原始类型,将他们都转换为数字进行比较

'1'-->1 ''-->0 ' '-->0 'A'-->NaN

    console.log('1'>10);//false,将字符'1'转换为数字1再进行比较
    console.log('2'>true);//true,只要一个不是字符串,一定是转换为数字再进行比较 2>1 

2.NaN与任何数字进行比较,得到的结果都是false

    console.log(NaN>0);//false
    console.log(NaN<0);//false
    console.log(NaN==0);//false
    console.log(NaN>NaN);//false
    console.log(NaN<Infinity);//false
    console.log(NaN>-Infinity);//false

3.Infinity 比任何数字都大
-Infinity 比任何数字都小

  console.log(Infinity>100000000000000);//true
  console.log(Infinity>10n);//true
  console.log(-Infinity<0);//true
  console.log(-Infinity<-111111111111111111111111111);//true

4.如果其中一个是对象,将对象转换为原始类型,然后按照原始类型比较规则进行比较

目前,对象转换为原始类型后,是字符串"[object Object]"

    console.log(3>{});//这里进行比较的时候因为有一个值不是原始类型,所以对象被转换成了字符串'[object Object]',现在就变成了一个比较数为数字,另一个为字符串,应用细节1的规则,两个比较数有一个不是字符串,那么都将被转换为数字,'[object Object]'转换为数字以后为NaN,所以结果就为false
    console.log(null>-1);//true,两个原始类型进行比较并且有一个不是字符串,那么两者都会被转换为数字进行比较
    console.log(undefined>-1);//false,undefined转换为数字是NaN

相等比较

相等比较 == 和 不相等比较 !=

== :比较两个数据是否相等
!= :比较两个数据是否不相等

细节
1.两端的类型相同,直接比较两个数据是否相同(两个对象比较的是地址)

    var o1={}
    var o2={}
    console.log(o1==o2);//false,o1和o2指向两个不同的对象

2.两端的类型不同

1).null和undefined,他们之间相等,和其他原始类型比较,则不相等

   console.log(null==undefined);//true
   console.log(null=='');//false
   console.log(undefined=='');//false

这里有个坑,比较null==0时返回false 但是null>=0 返回true null>0返回false,是不是感觉很神奇

  console.log(null==0);//false
  console.log(null>=0);//true
  console.log(null>0);//false

但是undefined又有点不一样:

  console.log(undefined==0);//false
  console.log(undefined>0);//false
  console.log(undefined>=0);//false

2).其他原始类型,比较时像转换为数字,再进行比较

console.log('1'==1)//true
console.log(true==1);//true
console.log(true=='1');//true

3).NaN与任何数字比较,都是false,包括自身

  console.log(NaN==1);//false
  console.log(NaN==NaN);//false
  console.log(NaN==0);//false

4).Infinity和-Infinity,和自身相等

  console.log(Infinity==Infinity);//true
  console.log(Infinity==1);//false
  console.log(-Infinity==-Infinity);//true

5).对象比较时,要先转换为原始类型,再进行比较

var o={}
console.log(o==0);//false,这里先将对象转换为原始类型,变成'object Object',然后再将其转换为数字NaN,结果为false

由于相等和不相等比较,对于不同类型的数据比较违反直觉,因此,通常我们不适用这种比较方法,而是使用更加接近只觉得严格相等和严格不相等来进行比较

===和!==(严格相等和严格不相等)

===:两端的数据和类型必须相同
!==:两端的数据或类型不相同

1.两端类型相同,规则和相等比较一致
2.两端类型不同,结果为false

数字规则:
1).NaN与任何数字比较,都是false,包括自身
2).Infinity和-Infinity,自身和自身相等

    console.log(1===true);//false
    console.log(NaN===NaN);//false
    console.log(Infinity===Infinity);//true
    console.log(-Infinity===-Infinity);//true
    console.log(null===undefined);//false

相关文章

  • MySQL 中的运算符和常用函数

    MySQL学习笔记(3) 运算符 类型:算术、比较、逻辑和位运算符 算术运算符 比较运算符 比较运算符可比较数字、...

  • 2019-03-06

    运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符 2.比较运算符:>,<,==,!=,>=,<= 所有比较运...

  • MySQL运算符

    算数运算符,比较运算符,逻辑运算符,位运算符 算数运算符: + - * / % 比较运算符: =, <>, !=...

  • 运算符与字符串

    运算符 算数运算符、比较运算符、赋值运算符、逻辑运算符比较运算符:>、<、>=、<=、==、!=赋值运算符:=、+...

  • 《Web前端开发之JavaScript精英课堂》(二)

    2.1 比较运算符,逻辑运算符 比较运算符">" "<" "==" ">=" "<=" "!="比较结果为bool...

  • 2018年6月13日【Python学习笔记】

    一、运算符 运算符:算数运算符、比较运算符、赋值运算符、逻辑运算符 1.比较运算符:>、<、>=、<=、==、!=...

  • day2学习总结0613

    01-运算符分为: 算术运算符、比较运算符、赋值运算符、逻辑运算符 1.1比较运算符:>、<、>=、<=、==(相...

  • 逻辑运算符

    赋值运算符 比较运算符 先运算再比较 逻辑运算符 比较大于逻辑!,&&,|| 单目运算符(!++ -- & ) 大...

  • Python3 基础03-运算符

    算数运算符、比较运算符、赋值运算符、逻辑运算符、身份运算符、成员运算符 一、算数运算符 例子: 二、比较运算符 返...

  • Linux的判断表达式:-d,-f,-e等

    文件比较运算符表达式 说明 案例 字符串比较运算符 算是比较运算符

网友评论

    本文标题:比较运算符

    本文链接:https://www.haomeiwen.com/subject/rtrywrtx.html