js值的比较

值的比较

前言: 本篇文章主要介绍了 js 类型值的比较以及相等性检查,nullundefined 的特殊比较及比较运算符的特殊处理。

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 转换为 1false 转换为 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. nullundefined 的比较

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

相等性检查 == 和 普通比较运算符 > < >= <= 的代码逻辑是相互独立的。undefinednull 在相等性检查中不会转换为任何类型,它们有自己独立的比较规则。undefined 只与 null 相等。

7.总结

(1)比较运算符始终返回布尔值
(2)字符串的比较,会按照"词典"顺序逐字符进行比较。
(3)对不同类型值进行比较时,它们会先被转换为数字(不包括严格检查)再进行比较。
(4)在非严格相等下,undefined 只与 null 相等且各自不等于其他任何值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值