关于if(xx)和 a==b的判断

if(xx)

规则

对于括号里的表达式,会被强制转换为布尔类型

类型结果

undefinedfalse

Nullfalse

Boolean直接判断

Number+0, −0, 或者 NaN 为 false, 其他为 true

string空字符串为 false,其他都为 true

Objecttrue

==

规则

对于等于号两边的数值,会被强制转化成数字然后进行比较

xy结果

nullundefinedtrue

NumberStringx==toNumber(y)

Boolean(any)toNumber(x)==y

ObjectString or NumbertoPrimitive(x)==y

otherwiseotherwisefalse

toNumber

typeResult

UndefinedNaN

Null0

Booleantrue->1,false->0

String"abc"->NaN,"123"->123

toPrimitive

对于Object类型,先尝试调用.valueOf方法获取结果。如果没有定义,在尝试调用toString方法获取结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容