• javascript类型转换


    转换后的类型
    字符串 数字 布尔值 对象
    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,因为它的对象。

       

  • 相关阅读:
    setValue 和 setObject 的区别
    沙盒(SandBox)
    刷题篇--热题HOT 52-60
    刷题篇--热题HOT 31-40
    刷题篇--热题HOT 41-51
    8. AIO
    7. NIO与零拷贝
    6. NIO三核心(Selector)
    5. NIO三核心(Buffer、Channel)
    刷题篇--热题HOT 21-30
  • 原文地址:https://www.cnblogs.com/ldld/p/5724040.html
Copyright © 2020-2023  润新知