关系运算符包括> 、>=、<、<=、==、 ===,运算结果会返回一个布尔值。

数值比较举例:

 var a = 3;var b = 4;console.log(a > b); //false

== 和 != 是比较运算,比较的时候等号两边的内容会进行隐式转换,只比较转换后的值是否相等,不比较转换前的类型是否相同。

不同类型的数据使用 == 比较时的转换规则:

一、布尔值与各种数据类型的比较:

1、布尔值和字符串比较,将布尔值和字符串都转换为数值。

 console.log("3" == true); //falseconsole.log(" " == true); //false

2、布尔值和数值比较,将布尔值转换为数值。

 console.log(3 == true); //false

3、布尔值与其他数据类型的比较:

 console.log(undefined == false); //false 布尔值不能转换为undefined,所以不相同console.log(null == false); //false 布尔值不能转换为null,所以不相同console.log({ a: 1 } == true); //false 布尔值不能转换为对象,所以不相同console.log(([] == false)); //true 数组比较时,如果比较布尔值,优先将数组转换为字符串,然后再比较console.log(![] == false); //true 一旦使用!,优先将[]看做对象,所以[]就是true,取反就是false
 console.log(![] == []); //true

二、字符串与各种数据类型的比较:

1、字符串和数值比较,优先将字符串转换为数值

 console.log("3" == 3); //trueconsole.log("0" == 0); //trueconsole.log("" == 0); //true

2、字符串与其他数据类型的比较:

 console.log("undefined" == undefined); //falseconsole.log("null" == null); //falseconsole.log("" == null); //falseconsole.log("" == undefined); //falseconsole.log("{a:1}" == { a: 1 }); //falseconsole.log("[object Object]" == { a: 1 }); //true    因为对象有toString()方法,一旦比较时就会隐式触发对象的toString()方法console.log("a" == ["a"]); //true 数组会转换为字符串比较。    如果是把字符串转换为数组,那它们就是两个对象,而两个对象是不相等的。

注意: 0、false、"" 三者之间互相使用 == 比较时的结果都是true。

 console.log(0 == ""); //trueconsole.log("" == false); //trueconsole.log(0 == false); //true

三、其他数据类型之间的比较:

1、undefined和null

 console.log(undefined == null)

默认规定的只有 undefined == null 的结果是true,它们和其他的数据类型进行比较结果时,结果都是false。

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

2、非数值NaN

规定NaN不和任何数值相等,包括它自身。

 console.log(isNaN(Number("a"))); //true

使用isNaN()方法可以判断里面的数据是否是非数值,如果是非数值(即不是数值)则返回true,否则返回false。

=== 和 !== 是绝对相等和绝对不相等,先判断类型是否相同,再判断值是否相同。

 if (!a) { }

能进入上面if判断的a满足的条件有:""、undefined、null、0、false、NaN。

 if (a == false) { }

能进入上面if判断的a满足的条件有:0、""、false。

 if (a == undefined) { }

能进入上面if判断的a满足的条件有:null、undefined。

 if (a === undefined) { }

能进入上面if判断的a满足的条件有:undefined。


另外,Object.is() 类似于 === 。

 console.log(Object.is("3", 3)); //falseconsole.log(Object.is(3, 3)); //true

注意: 在Object.is()中,NaN和它自身是相等的。

 console.log(Object.is(NaN, NaN)); //trueconsole.log(NaN === NaN); //false

js运算符之关系运算符相关推荐

  1. linux脚本或关系表达,Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等...

    Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最 ...

  2. C#算数运算符、关系运算符、逻辑运算符、语句

    C#算数运算符.关系运算符.逻辑运算符.语句 一.运算符: (一).算术运算符:+ - * /% % --取余运算取余运算的应用场景: 1.奇偶数的区分. 2.把数变化到某个范围之内.--彩票生成. ...

  3. Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等

    Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最 ...

  4. 算数运算符与关系运算符_【Flutter 110】Flutter手把手教程Dart语言——运算符

    运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.Dart语言内置了丰富的运算符,并提供了以下类型的运算符:「算术运算符.关系运算符.类型判断运算符.赋值运算符.逻辑运算符.按位和移位运算 ...

  5. 【笔记】Java的运算符(赋值运算符号、一元运算符、算术运算符、关系运算符、自增与自减运算符、逻辑运算符、括号运算符、位运算符、三元(三目)运算符)、表达式与语句:简洁表达式

    文章目录 一.运算符 1.赋值运算符号 2.一元运算符 3.算术运算符 4.关系运算符 5.自增与自减运算符 6.逻辑运算符 7.括号运算符 8.位运算符 左移位: 右移位: 9.三元(三目)运算符 ...

  6. 【Cprimerplus_03】算术运算符、关系运算符、逻辑运算符

    算术运算符.关系运算符.逻辑运算符 文章里面的所有截图和"之前所学过的内容"都是来自于翁恺的C语言视频. 之前已经学习过简单的算术运算符.关系运算符(又称比较运算符).逻辑运算符. ...

  7. JavaScript基础实战(2)js中的强制类型转换、运算符、关系运算符、逻辑运算符、条件运算符

    文章目录 1.强制类型转换Number 1.1 代码 1.2 测试结果 2.进制表示 2.1 代码 2.2 测试结果 3.强制类型转换为Boolea 3.1 代码 3.2 测试结果 4.运算符 4.1 ...

  8. Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符

    1. Go 运算符分类 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 1.1 算术运算符 下表列出了所有Go语言的算术运算符.假定 A 值为 10, ...

  9. python关系运算符中表示不等于的关系运算符_Python学习之------运算符表达式(关系运算符,逻辑运算符,三元表达式,成员关系)...

    @详细看Python学习手册第121页. 1,算术运算符(加减乘除) 2,关系运算符(又叫比较运算符 > < == != >= <=) xy,x>=y    大小比较,返 ...

最新文章

  1. 【复盘】如何培养小朋友的编程能力?
  2. Entity Framework 6.3 和 EF Core 3.0 路线图
  3. 发现几个常用的asp.net MVC Helper 源码
  4. 一些有趣的 CSS 魔法和布局(下)(结尾有岗位内推哦~)
  5. heart ultrasound from american society of echocardiography
  6. BXP无盘网络方案及设备选用(转)
  7. 网络聊天室Java群聊私聊_Java Spring + Spring MVC + Mybatis WebSocket实现网络聊天室(群聊+私聊)...
  8. JavaWeb教程———过滤器
  9. react 加粗_css字体如何加粗?
  10. 纯CSS制作简单几何图形
  11. php木马检测关键词
  12. python的print函数用逗号分隔时输出不用空格_python print 按逗号或空格分隔的方法...
  13. 四个漂亮CSS样式表
  14. TM4C123系列(三)————PWM输出
  15. 家用双wan口路由器推荐_什么路由器有两个以太口 家用双wan口路由器推荐
  16. wince挂起和唤醒_relayon
  17. w10网络里面没有计算机,win10计算器没有了怎么办_w10系统自带的计算器没有了的解决方法...
  18. 解决git clone与git push出现的若干问题:Failed to connect to github.com port 443: Timed out
  19. MySQL的count(1)特别慢的解决方案
  20. ipad手写笔哪款好?性价比高的触控笔

热门文章

  1. java微信支付接口源码_java微信支付源码(WxPayAPI_JAVA_v3)
  2. 微信小程序存在的风险_微信小程序风口来了?小程序目前存在哪些主要问题
  3. 解析 css3 transition:all 1s ease 1s
  4. Designing Data-Intensive Applications(设计数据密集应用)- O'Reilly 2017 读书笔记
  5. 送给所有程序员的浪漫
  6. 极客时间和极客学院_如何重置“极客琐事”得分(并减少愚蠢感)
  7. qgis切片下载与本地部署以及调用
  8. 不注册Nvidia账号下载cuDNN的方法
  9. P2P相关软件源代码下载
  10. Ubuntu蓝牙Bluetooth命令行连接发送文件完整流程