对于if(xxx)中的类型转换
对于
if(xxx)中的括号的部门会强制转换成boolean值。
- undefined ==> false
- null ==> false
- boolean ==>直接判断
- string ==> 除了空字符串外,都是true
- number ==> +0、-0、NaN为fasle,其他都为true
- object ==> 为true。
对于==中的类型转换
对两边是否判断相等的
==运算符,js会帮我们做一些类型转换。
- 一个为
null,一个为undefined,两个相等。 - 一个为
number,一个为string,将string转换成number。 - 一个为
boolean,一个为其他,则将Boolean转换成数字,进行比较,true为1,false为0 - 一个为
object,其他值为字符串或者数字。先调用object中的valueOf()方法获得结果,若未定义,再调用toString()
方法获得结果。 - 其他都不相等。
以上可以连续转换,比如,'1'==true的结果为true原因是,先将true转换成数字,为1,则为'1'==1再将字符串1转换成数字1,而后为相等。
基本上就是,除了object是调用valueof和tostring来获得结果外,都是将类型转换成数字来进行比较
对于各种类型转换成数字的
-
undefined==>NaN -
Null==> , -
boolean==>true为1,false为0 -
string==>空字符串和空格字符串为0,非纯数字字符串为NaN,数字字符串为数字。