转换后的类型
字符串 数字 布尔值 对象
undefined “undefined” NaN false throws Typerror
null “null” 0 false throws Typerror
true "true" 1   new Boolean(true)
false "false" 0   new Boolean(false)
""(空字符串) "" 0 false new String("")
"3.4"   3.4 true new String("3.4")
"one"   NaN true new String("one")
0 "0"   false new Number(0)
-0     "0"   false new Number(0)
NaN "NaN"   false new Number(NaN)
1 "1"   true new Number(1)
Infinity "Infinity"   true new Number(Infinity)
{} 参考1 参考3    
[] "" 0 true  
[8] "8" 8 true  
["a"] "a" NaN true  
function(){} 参考2   true  
         

根据如上表格,我们可以清晰的看到一个类型转换到另一个类型后的值。

其中:

参考1:对象转换成字符串后的值为"[object Object]"。

    控制台输入:1+{}//返回"1[object Object]"

    控制台输入:""+{}//返回"[object Object]"

   你可以理解为转转成字符串的时候调用了对象的toString()方法。

   如果该对象没有toString()方法,那就调valueOf()。

   如果连valueOf()方法都没有,则抛出类型错误异常。

参考2:function a(){},转成字符串的时候,返回这个字符串的定义方式.

       "function a(){}",

参考3:对象转化成数字

     先判断该对象是否有valueOf()方法,有就返回这个方法得到的原始值,再将原始值转化成数字。

   如果没有valueOf(),则调用toString()得到的原始值,再将原始值转化成数字。

   如果连toString()方法都没有,则抛出类型错误异常。

 

根据上表,同样可以得出:

1.所以对象转换成原始的布尔值的时候,都是true,

  New Boolean(false) 也是返回true,因为它的对象。