js真假判断

javascript中,真假的判断,常常令人困惑.同样的表达式,在不同的操作符下会有不同结果。在此做个简单的总结。

条件判断

根据ES5规范,以if运算符为例,变量转为布尔类型后的结果如下

类型 结果
Undefined false
Null flase
Boolean 不转换,结果与原表达式相同
Number +0,-0,NaN为false,其他为true
String 字符串为空时,结果为false
Object true

==

抓住两个大原则: undefined与null彼此相等;其余大多数类型都被强制转化为number以便比较。

以x == y为例给出下表

x的类型 y的类型 结果
x、y类型相同 ------ 遵循严格相等(===)
null Undefined true
Undefined null true
number String x == toNumber(y)
String Number toNumber(x) == y
Boolean 任意 toNumber(x) == y
(any) Boolean x == toNumber(y)
String or Number Object x == toPrimitive(y)
其他情况 ------ false

附:强制转化结果

toNumber

类型 Result
Undefined NaN
Null +0
Boolean 1,true;0,false
Number 与原数字相同
String “abc” -> NaN;“123” -> 123
Object 1. 将primValue转化为基础类型 2. 返回 ToNumber(primValue).

ToPrimitive

即使用valueOf或toString将object转化为基础类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容