对于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,数字字符串为数字。