if(xxx)和a == b的判断方法

if(xxx)括号中的表达式会被强制转换成布尔类型,其转化遵循如下规则:

undefined       false

Null                  false

Boolean          根据实际布尔值true或false判断

Number           +0,-0,0.0,NaN等为false,其余为true

String               空字符串为false,其余为true、

Object              均为true


关于a == b的判断,可分为两种情况:

1.  如果两个值类型相同,则执行严格相等的运算来判断;

2.  如果两个值类型不同:

①一个null,一个undefined,相等;

②一个数字,另一个字符串,先将字符串转换成数字,然后比较,如‘8’ == 8为true,可先将字符串‘8’转换成数字8,然后比较,‘’ == 1为false,因为‘’转化成数字为0,不等于1;

③其中一个为true/false,将其转化成1/0进行比较,如"hello" == true,字符串"hello"转化成数字为NaN,true转化成数字是1,故结果为false,在如"0" == false,"0"转化成数字为0,false转化成数字也是0,所以结果为true;

④如果一个是对象,另一个是数字或字符串,则尝试使用valueof和toString转换后进行比较,如var obj = {

a: 0,

  valueOf: function(){return 1}

}

obj == "[object Object]",将obj转换成valueof值1,故不相等,结果为false。

附:不同类型变量转换成数字规则

undefined        NaN

Null                   0

Boolean            true为1,false为0

string                 "abc"等为NaN,"123"转换成对应数字

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