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. 逻辑与(&&)
逻辑与(&&)真值表

第一个操作数第二个操作数结果
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

逻辑与运算可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的情况下,逻辑与遵循以下规则:

  • 如果第一个操作数是对象,则返回第二个操作数。
  • 如果第二个操作数是对象,则只有第一个操作数的求值结果为true的情况下才会返回该对象。
  • 如果两个操作数都是对象,则返回第二个操作数。
  • 如果第一个操作数是null,则返回null。
  • 如果第一个操作数是undefined,则返回undefined。
  • 如果第一个操作数是NaN,则返回NaN。

逻辑与是短路操作,即如果第一个数能够决定结果,那么就不再对第二个数进行求值。对于逻辑与而言,如果第一个操作数是false,则无论第二个数是什么值,结果都不可能是true。
2. 逻辑或(||)
逻辑或(||)真值表:

第一个操作数第二个操作数结果
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

与逻辑与很类似,逻辑或遵循以下规则:

  • 如果第一个操作数是对象,则返回第一个操作数。
  • 如果第一个数的求值结果为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
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值