JS 在很多情况下会进行强制类型转换
其中, 最常见两种是:
1. 使用非严格相等进行比较, 对 == 左边的值进行类型转换
2. 在 if 判断时, 括号内的值进行类型转换, 转化为布尔值
今天, 我就来聊一聊 JS 在 if 中的强制类型转换.
其实, 如果详细要讨论哪些值在 if 中强制转换为 true, 哪些值在 if 中强制转换为 false, 这很困难, 因为, 情况太多了. 但是, 我们可以轻松记住强制类型转换结果, 为什么? 因为, 大多数情况下, 都是转换为 true, 只有四种情况会转换为 false. 此时, 我们只需要记住转换为 false 的那四种情况就可以了.
强制转换为 false 的四种情况
在 if 中进行强制转换为 false 的情况只有四种, 分别是:
1. 数字 0
2.NaN
3. 空字符串
4.null 或 undefined
很多人会问, 为什么 null 和 undefined 会在一起? 因为, 在非严格相等的情况下, null 和 undefined 是相等的.
- null == undefined // true
- // 两种写法相等
- a == null
- a === null || a === undefined
如何判断引用数组和对象是否为空
- var arr = []
- arr.length = 0
- var obj = {
- }
- Object.keys(obj).length = 0
来源: http://www.qdfuns.com/article/51117/ed158ed8d6cdc9c53c135ac7025ba29c.html