JavaScript中的关系运算符和逻辑运算符
一、关系运算符
比较运算符
大于(>)、小于(<)、大于等于(>=)、小于等于(<=)这几个关系运算符用于对两个值进行比较。这几个运算符都返回一个boolean值,如下例所示:
var result = 5>3; //true
var result2 = 5<3; //false
与在JavaScript中的其他运算符一样,当关系运算符的操作数是非数值时,也要进行数据转换或完成某些神奇操作。看下列规则:
- 如果两个数都是数值,则进行数值比较
- 如果两个操作数都是字符串,则比较两个字符串对应的Unicode字符编码值
- 如果一个操作数是数值,则将另一个操作数转换为数值,然后进行数值比较
- 如果一个操作数是对象,则调用这个对象的valueOf方法/toString()方法,用得到的结果按照前面的规则进行比较
- 如果一份操作数是布尔值,,则先将其转换为数值,然后再进行数值比较
举几个例子:
var result2 = "29" < "3"; //比较的是字符编码,2的字符编码是“50,而3的字符编码是是“51”
console.log(result2); //true
var result2 = "29" < "3"; //比较的是字符编码,2的字符编码是“50,而3的字符编码是是“51”
console.log(result2); //true
var result3 = "a" < 3; //因为"a"无法被转换为数值,所以被转换为NaN
console.log(result3); //false
var result4 = NaN < 3;
console.log(result4) //false
var result5 = NaN >= 3;
console.log(result5); //false
相等运算符
在JavaScript中有两组相等运算符:相等和不相等、全等和不全等
1.相等和不相等
JavaScript中的相等运算符有两个等于号(==)表示,如果两个操作数相等,就返回true,否则,但会false。
JavaScript中的不相等运算符用叹号后面加一个等于号(!=)表示,如果两个操作数不想等,就返回true,否则,返回false。
这两种类型都会先转换操作数(通常为强制转型),然后再比较它们的相等性。
在转换不同数据类型时,相等和不相等运算符遵循以下规则:
- 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,true转换为1;
- 如果有一个操作数是字符串,另一个操作数是数值,在比较之前先将字符串转换为数值,再进行比较
- 如果有一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值进行比较
- null和undefined是相等的
- 如果有一个操作数是NaN,则相等运算符返回false,而不相等运算符返回true。即使两个操作数都是NaN,相等运算符返回false,按照规则,NaN不等于NaN
- 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则返回true,否则,返回false
2.全等和不全等
全等运算符使用三个等于号(===)表示。
不全等运算符使用一个叹号加两个等于号(!==)表示。
举几个例子:
var result = ("55" == 55);
var result2 = ("55" === 55);
console.log(result); //true
console.log(result2); //false
var result3 = ("55" != 55);
var result4 = ("55" !== 55);
console.log(result3); //false
console.log(result4); //true
全等、不全等和相等、不相等的区别:
全等、不全等比较内容还比较数据类型。
相等不相等只比较内容,不比较数据类型。
二、逻辑运算符
逻辑运算符分为逻辑与(&&)、逻辑或(||)、逻辑非(!),三种运算符的返回值都是布尔值。
1. 逻辑与(&&)
逻辑与(&&)真值表
第一个操作数 | 第二个操作数 | 结果 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
逻辑与运算可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的情况下,逻辑与遵循以下规则:
- 如果第一个操作数是对象,则返回第二个操作数。
- 如果第二个操作数是对象,则只有第一个操作数的求值结果为true的情况下才会返回该对象。
- 如果两个操作数都是对象,则返回第二个操作数。
- 如果第一个操作数是null,则返回null。
- 如果第一个操作数是undefined,则返回undefined。
- 如果第一个操作数是NaN,则返回NaN。
逻辑与是短路操作,即如果第一个数能够决定结果,那么就不再对第二个数进行求值。对于逻辑与而言,如果第一个操作数是false,则无论第二个数是什么值,结果都不可能是true。
2. 逻辑或(||)
逻辑或(||)真值表:
第一个操作数 | 第二个操作数 | 结果 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
与逻辑与很类似,逻辑或遵循以下规则:
- 如果第一个操作数是对象,则返回第一个操作数。
- 如果第一个数的求值结果为false,则返回第二个操作数
- 如果两个操作数都是对象,则返回第一个操作数
- 如果两个操作数都是null,则返回null
- 如果两个操作数都是undefined,则返回undefined
- 如果两个操作数都输NaN,则返回NaN
与逻辑或也是短路运算符。也就是说,如果第一个操作数的求值结果为true,就不会对第二个操作数进行求值了。
3. 逻辑非(!)
无论这个值是什么数据类型,这个运算符都会返回一个布尔值,逻辑非运算符首先会将它的操作数转换为一个布尔值,然后对其进行求反。
举几个例子:
console.log(!false); //true
console.log(!"blue"); //false
console.log(!0); //true
console.log(!NaN); //true
console.log(!''); //true
console.log(!1234); //false
JavaScript中的关系运算符和逻辑运算符相关推荐
- javascript关系运算符与逻辑运算符
原文来自javascript关系运算符与逻辑运算符 一.关系运算符 用于进行比较的运算符称作为关系运算符:小于(<).大于(>).小于等于(<=).大于等于(>=).相等(== ...
- HTML学习9 JS 数字和字符串 变量的类型 运算符和表达式 布尔值和关系运算符、逻辑运算符
JavaScript简介 1.1 JavaScript的用途 JavaScript用来制作web页面交互效果,提升用户体验. 简单列出几个JavaScript能够制作的页面效果,它能干什么: 轮播图 ...
- 关系运算符与逻辑运算符
关系运算符与逻辑运算符 关系运算符,通俗的讲就是比较,俗话说没有比较就没有伤害.现实中每天我们都在进行比较,购物的时候,选对象的时候等等,JAVA中提供了六种比较方式. 1.== :常用来比较值是否相 ...
- 【Cprimerplus_03】算术运算符、关系运算符、逻辑运算符
算术运算符.关系运算符.逻辑运算符 文章里面的所有截图和"之前所学过的内容"都是来自于翁恺的C语言视频. 之前已经学习过简单的算术运算符.关系运算符(又称比较运算符).逻辑运算符. ...
- JavaScript中的instanceof运算符是什么?
本文翻译自:What is the instanceof operator in JavaScript? The instanceof keyword in JavaScript can be qui ...
- C#算数运算符、关系运算符、逻辑运算符、语句
C#算数运算符.关系运算符.逻辑运算符.语句 一.运算符: (一).算术运算符:+ - * /% % --取余运算取余运算的应用场景: 1.奇偶数的区分. 2.把数变化到某个范围之内.--彩票生成. ...
- 【JavaSE】算术运算符、关系运算符、逻辑运算符、赋值运算符与三元运算符
本专栏为 JavaSE 的学习笔记及相关项目,专栏长期免费更新 ❤️ ❤️ ❤️ ⭐️往期回顾: [JavaSE]String类与基本数据类型转换 [JavaSE]Java数据类型.变量基本使用.编码 ...
- JavaScript基础实战(2)js中的强制类型转换、运算符、关系运算符、逻辑运算符、条件运算符
文章目录 1.强制类型转换Number 1.1 代码 1.2 测试结果 2.进制表示 2.1 代码 2.2 测试结果 3.强制类型转换为Boolea 3.1 代码 3.2 测试结果 4.运算符 4.1 ...
- python关系运算符中表示不等于的关系运算符_Python学习之------运算符表达式(关系运算符,逻辑运算符,三元表达式,成员关系)...
@详细看Python学习手册第121页. 1,算术运算符(加减乘除) 2,关系运算符(又叫比较运算符 > < == != >= <=) xy,x>=y 大小比较,返 ...
- Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符
1. Go 运算符分类 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 1.1 算术运算符 下表列出了所有Go语言的算术运算符.假定 A 值为 10, ...
最新文章
- 简单的横向ListView实现(version 3.0)
- 思科光传输功率查询_各品牌网络设备的光功率查看方法(不完全统计)
- left join 和 left outer join 的区别【转】
- matlab smulink笔记03——过零检测
- python与matlab混合编程_python 与 matlab 混编
- 自定义select样式
- C 语言实例 - 判断闰年
- MFC的非模态对话框资源管理
- Pytorch 一种调整学习率的思路
- Java编程:马踏棋盘算法(骑士周游问题)
- 微信小程序添加使用外部字体
- OOA、OOD、OOP 区别与思想
- 使用ID3算法实现决策树
- 【疑难杂症】三步解决虚拟机启动失败,提示无法获取VMCI驱动程序的版本的问题
- RAKsmart高防服务器怎么样
- 理财就是理生活 —— 小白理财训练营(上)
- 最大流为什么会等于最小割
- 【DXP】更换原理图模板的方法
- Django中使用富文本编辑器Uedit
- 安卓手机系统开发教程!BTAJ面试有关散列(哈希)表的面试题详解,大厂直通车!
热门文章
- 什么是多道程序设计技术,试述多道程序运行的特征。
- 计算机解决最小二乘法的过程,线性最小二乘法在计算机化学中的应用.doc
- 《Redis视频教程》(p1)
- 一加3t刷机后还卡_一加3t刷机工具大全+3个ROM
- 黑马python培训费用
- html设置自己下载的字体
- 如何查找CAD打印样式文件存储位置?
- PFC编程基础(学习实战)
- 2021年全国省市县行政区划道路水系shp矢量数据(路网:国道省道县道乡道城市一级二级三级四级高速铁路 水系:全国水系一级二级四级五级河流 行政边界:省市县行政区划界线)
- ug齿条插件_NX9.0齿轮齿条运动仿真—齿轮工具箱巧用及渐开线制作