2018-05-12

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

你可能感兴趣的:(2018-05-12)