JS 值的比较

值的比较

前言:本篇文章主要介绍了 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 会被转换为 0undefined 会被转换为 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

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!