js运算符之关系运算符
关系运算符包括> 、>=、<、<=、==、 ===,运算结果会返回一个布尔值。
数值比较举例:
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运算符之关系运算符相关推荐
- linux脚本或关系表达,Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等...
Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最 ...
- C#算数运算符、关系运算符、逻辑运算符、语句
C#算数运算符.关系运算符.逻辑运算符.语句 一.运算符: (一).算术运算符:+ - * /% % --取余运算取余运算的应用场景: 1.奇偶数的区分. 2.把数变化到某个范围之内.--彩票生成. ...
- Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最 ...
- 算数运算符与关系运算符_【Flutter 110】Flutter手把手教程Dart语言——运算符
运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.Dart语言内置了丰富的运算符,并提供了以下类型的运算符:「算术运算符.关系运算符.类型判断运算符.赋值运算符.逻辑运算符.按位和移位运算 ...
- 【笔记】Java的运算符(赋值运算符号、一元运算符、算术运算符、关系运算符、自增与自减运算符、逻辑运算符、括号运算符、位运算符、三元(三目)运算符)、表达式与语句:简洁表达式
文章目录 一.运算符 1.赋值运算符号 2.一元运算符 3.算术运算符 4.关系运算符 5.自增与自减运算符 6.逻辑运算符 7.括号运算符 8.位运算符 左移位: 右移位: 9.三元(三目)运算符 ...
- 【Cprimerplus_03】算术运算符、关系运算符、逻辑运算符
算术运算符.关系运算符.逻辑运算符 文章里面的所有截图和"之前所学过的内容"都是来自于翁恺的C语言视频. 之前已经学习过简单的算术运算符.关系运算符(又称比较运算符).逻辑运算符. ...
- JavaScript基础实战(2)js中的强制类型转换、运算符、关系运算符、逻辑运算符、条件运算符
文章目录 1.强制类型转换Number 1.1 代码 1.2 测试结果 2.进制表示 2.1 代码 2.2 测试结果 3.强制类型转换为Boolea 3.1 代码 3.2 测试结果 4.运算符 4.1 ...
- Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符
1. Go 运算符分类 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 1.1 算术运算符 下表列出了所有Go语言的算术运算符.假定 A 值为 10, ...
- python关系运算符中表示不等于的关系运算符_Python学习之------运算符表达式(关系运算符,逻辑运算符,三元表达式,成员关系)...
@详细看Python学习手册第121页. 1,算术运算符(加减乘除) 2,关系运算符(又叫比较运算符 > < == != >= <=) xy,x>=y 大小比较,返 ...
最新文章
- 【复盘】如何培养小朋友的编程能力?
- Entity Framework 6.3 和 EF Core 3.0 路线图
- 发现几个常用的asp.net MVC Helper 源码
- 一些有趣的 CSS 魔法和布局(下)(结尾有岗位内推哦~)
- heart ultrasound from american society of echocardiography
- BXP无盘网络方案及设备选用(转)
- 网络聊天室Java群聊私聊_Java Spring + Spring MVC + Mybatis WebSocket实现网络聊天室(群聊+私聊)...
- JavaWeb教程———过滤器
- react 加粗_css字体如何加粗?
- 纯CSS制作简单几何图形
- php木马检测关键词
- python的print函数用逗号分隔时输出不用空格_python print 按逗号或空格分隔的方法...
- 四个漂亮CSS样式表
- TM4C123系列(三)————PWM输出
- 家用双wan口路由器推荐_什么路由器有两个以太口 家用双wan口路由器推荐
- wince挂起和唤醒_relayon
- w10网络里面没有计算机,win10计算器没有了怎么办_w10系统自带的计算器没有了的解决方法...
- 解决git clone与git push出现的若干问题:Failed to connect to github.com port 443: Timed out
- MySQL的count(1)特别慢的解决方案
- ipad手写笔哪款好?性价比高的触控笔
热门文章
- java微信支付接口源码_java微信支付源码(WxPayAPI_JAVA_v3)
- 微信小程序存在的风险_微信小程序风口来了?小程序目前存在哪些主要问题
- 解析 css3 transition:all 1s ease 1s
- Designing Data-Intensive Applications(设计数据密集应用)- O'Reilly 2017 读书笔记
- 送给所有程序员的浪漫
- 极客时间和极客学院_如何重置“极客琐事”得分(并减少愚蠢感)
- qgis切片下载与本地部署以及调用
- 不注册Nvidia账号下载cuDNN的方法
- P2P相关软件源代码下载
- Ubuntu蓝牙Bluetooth命令行连接发送文件完整流程