JavaScript中6种值为false
0 // (数字0)"" // (空字符串)nullundefinedNaNfalse// 以上6种值为false
值的比较
一、 比较运算符
比较运算符在逻辑语句中使用,用以测定变量或值是否相等
例:x = 5 (比较的结果为Boolean类型!!!)
运算符 | 描述 | 比较 | 返回值 |
---|---|---|---|
== | 等于 | x == 8 | false |
=== | 绝对等于(值和类型均相等) | x === ‘5’ | false |
!= | 不等于 | x != 8 | true |
!== | 不绝对等于(值和类型有一个不相等,或两个都不相等) | x !== ‘5’ | true |
> | 大于 | x > 8 | false |
< | 小于 | x < 8 | true |
>= | 大于或等于 | x >= 8 | false |
<= | 小于或等于 | x <= 8 | true |
二、比较规则
非严格相等运算符比较(隐式转换)
1. NaN与任何数字比较都不相等(包括它自身)
- 没有隐式转换,无条件返回false
NaN == NaN // false
NaN == Infinity // false
2. 比较的两方是string, boolean, number类型
- 隐式转换,会将不是数字类型的转换为数字再比较
1 == true // true
1 == 'true' // false Number('true') = NaN
1 == !'true' // false
3. null 和 undefined
- 使用非严格相等 == 比较二者时,JavaScript存在一个特殊的规则,会判断它们相等,不能将它们转换为任何值
null == undefined // true
- 使用严格相等 === 比较二者时,它们不相等,因为它们属于不同的类型
null === undefined // false
- 使用其他比较方法 <, >, <=, >= 时,null和undefined会被转换为数字。
- null 被转换为0,undefined被转换为NaN
null
null > 0 // false
null == 0 // false
null >= 0 // true
undefined
undefined > 0 // false
undefined == 0 // false
undefined < 0 // false
字符串比较
- 在比较字符串的大小时,JavaScript会使用“字典”(dictionary)或“词典”(lexicographical)顺序进行判定。
- 换言之,字符串是按字符(母)逐个进行比较的
'Z' > 'A' // true
'James' > 'Kobe' // false
'Glow' > 'Glee' // true
'James' > 'Jame' // true
// 特殊
'a' > 'A' // true
- 字串的比较算法:
在上面的例子中,‘z’ > ‘A’ 在比较算法中,第一步就得到结果,‘James’ > ‘Kobe’ 也是第一步就得到结果了,而后两行字符串比较则继续逐个字符比较:
然而有个特别之处,‘a’ > ‘A’ 为true
三、总结
- 比较运算符始终返回布尔值
- NaN与任何数字比较都不相等(包括NaN本身)
- 对不同类型的值进行比较时,会先将它们转换为数字(不包括严格相等===),再进行比较
- 再非严格相等==情况,null 和 undefined 相等,但是不等于其他任何值(非严格相等情况下,null和undefined不会转换为任何值)
- 字符串比较,会按照‘词典’顺序逐字的比较大小
本文借鉴:
现代 JavaScript 教程 — 学会不同类型值的比较
本文链接:https://my.lmcjl.com/post/16568.html
展开阅读全文
4 评论