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

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

当 if(number),0、NaN为false,其他值为true

当 if(string),空字符串为false,其他为true

当 if(boolean),直接判断

当 if(object),为true

当 if(undefined),为false

当 if(null),为false

a==b的判断

  1. string==number

判断为:toNumber(a)==b,如果a无法转换成number类型判断为false。

其中toNumber(undefined)的结果为NaN、toNumber(null)的结果为0。

2.(any)==boolean

在boolean类型转换中,true为1,false为0。

3.Object==number/string

object会使用valueOf和toString转换后再进行比较。

  1. null == undefined //true

toNumber

undefined --> NaN

null --> 0

boolean --> true:1, false:0

string --> "abc":NaN,"123":123

你可能感兴趣的:(if(xx)和 a==b的判断)