【JavaScript 教程】运算符—比较运算符

https://mp.weixin.qq.com/s/4xZ420eTVHnb0zsaPCqOYA

:注意,比较运算符可以比较各种类型的值,不仅仅是数值。
JavaScript 一共提供了8个比较运算符。
这八个比较运算符分成两类:相等比较和非相等比较。两者的规则是不一样的,对于非相等的比较,算法是先看两个运算子是否都是字符串,如果是的,就按照字典顺序比较(实际上是比较 Unicode 码点);否则,将两个运算子都转成数值,再比较数值的大小。

2、非相等运算符:字符串的比较

字符串按照字典顺序进行比较。JavaScript 引擎内部首先比较首字符的 Unicode 码点。如果相等,再比较第二个字符的 Unicode 码点,以此类推。

2>11
//false
'2'>'11'
//true

:第二个中,‘2’和’11’都是字符串,所以是2和1的Unicode码先比较,第一个中直接比较2和11

3、非相等运算符:非字符串的比较

如果两个运算子都不是字符串,分成以下三种情况。

(1)原始类型值

5 > '4'  
// true 
// 等同于 5 > Number('4') 
// 即 5 > 4 
true > false  
// true 
// 等同于 Number(true) > Number(false) 
// 即 1 > 02 > true  
// true 
// 等同于 2 > Number(true) 
// 即 2 > 1

上面代码中,字符串和布尔值都会先转成数值,再进行比较。
任何值(包括NaN本身)与NaN比较,返回的都是false。

1 > NaN // false 
1 <= NaN // false 
'1' > NaN // false 
'1' <= NaN // false 
NaN > NaN // false 
NaN <= NaN // false

4、严格相等运算符

1.先比类型,再比值,不同进制是同一类型
2.NaN与任何值都不相等(包括自身)。另外,正0等于负0。

NaN === NaN  // false 
+0 === -0 // true

NAN,undefined和null

NaN===NaN
//false
undefined===undefined
true
null===null
//true
null===undefined
//false
undefined == null
//true

6、相等运算符

先看类型,若相同和严格相同,若不相同,分下面四种情况

Number('11a')
//NaN
Number('')
//0

原始类型值
数值,字符串,布尔
原始类型值比较时先会转换成数值

(2)对象与原始类型值比较

先转换成原始数值,在比较,与布尔比较时,先都转换成数值。
建议不要使用相等运算符(),最好只使用严格相等运算符(=)。
1.&& 若前十true,输出,后,若前为false,输出前,且运算符可以多个连用,这时返回第一个布尔值为false的表达式的值。如果所有表达式的布尔值都为true,则返回最后一个表达式的值。
2.|| 若前为true,输出前,若前false,输出后,或运算符可以多个连用,这时返回第一个布尔值为true的表达式的值。如果所有表达式都为false,则返回最后一个表达式的值。
3.存在短路情况,输出后,以后的变量值不看了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值