值的比较
前言:本篇文章主要介绍了
js
类型值的比较以及相等性检查,null
和undefined
的特殊比较及比较运算符的特殊处理。
1. 比较结果为布尔型
所有比较运算符均返回布尔值(
true
或者false
),比较的结果可以赋值给任意变量
let result = 2 > 1
alert(result) // true
2. 字符串比较
在进行字符串比较时,js
会根据”字典(dictionary)
“或者”词典(lexicographical)
“顺序进行比较。也就是说,字符串是逐字母进行比较的。
'Z' > 'A' // true
'good' > 'god' // true
'God' > 'Go' // true
3.不同类型间的比较
对于不同类型值的比较,
js
首先会将其转换为数字,然后再进行比较。对于布尔类型,true
转换为1
,false
转换为0
.
'1' > 2 // false
5 > false // true
'1' > false // true
[] > false // false,[] 转换为数字 0
[0] > false // false,[0] 转换为数字 0
[2] > false // true,[2] 转换为数字 2
4.(严格)相等
==
只比较值,若值相等,则返回true
。 ===
先比较类型,再比较值,弱类型或者值不相等,则返回false
,否则返回true
。
// 1. 非严格相等
'1' == 1 // true
1 == true // true
// 2. 严格相等
'1' === 1 // false
1 === true // false
5. null
和 undefined
的比较
null == undefined // true
null === undefined // false
当使用
> < >= <=
进行比较时,null
会被转换为0
,undefined
会被转换为NaN
。
6. null
vs 0
&&
undefined
null > 0 // false
null == 0 // false
null >= 0 // true
undefined > 0 // false
undefined < 0 // false
undefined >= 0 // false
相等性检查
==
和 普通比较运算符> < >= <=
的代码逻辑是相互独立的。undefined
和null
在相等性检查中不会转换为任何类型,它们有自己独立的比较规则。undefined
只与null
相等。
7.总结
(1)比较运算符始终返回布尔值
(2)字符串的比较,会按照”词典”顺序逐字符进行比较。
(3)对不同类型值进行比较时,它们会先被转换为数字(不包括严格检查)再进行比较。
(4)在非严格相等下,undefined
只与 null
相等且各自不等于其他任何值。
原文始发于微信公众号(GIS之路):JS 值的比较
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/234760.html