• JS的类型转换


    stringnumber函数不被用作构造函数的可以当成转换函数

    如 string(false),number(‘3’),boolean([])

    Object(3) = new number(3);

    除了NULLundefined以外任何值都具有toString()方法

    JS 在执行程序的时候会自动检测表达式来进行变量转换。

       显示转换变量:

       可以使用构造函数:

      String(‘op’);object();boolean([]),number(‘3’),

    类型之间的转换:

       

    类型

    字符串

    数字

    布尔值

    对象

    undefined

    “undefined”

    NaN

    false

    Thows TypeError

    null

    “”

    0

    false

    Thows TypeError

    “”

     

     

    false

    New string(“”)

    “1.2”

     

    1.2

    true

    New string(“1.2”)

    “one”

     

    NaN

    true

    New string(“one”)

    0

    “0”

     

    false

    New number(0)

    -0

    “0”

     

    false

    New number(-0)

    NaN

    “NaN”

     

    false

    New number(NaN)

    Infinity

    “Infinity”

     

    true

    New number(Infinity)

    -Infinity

    “-Infinity”

     

    true

    New number(-Infinity)

    1

    ‘1’

     

    True 

    New number(1)

    {}任意对象

     

     

    True

     

    []任意数组

     

    0

    True

     

    [8]

    “8”

    8

    true

     

    [‘a’]

    join

    NaN

    true

     

    function

     

    NaN

    true

     

    对象转换为原始值:

    所有的对象都转换为布尔值为true,包括包装对象也是这样。

    对象转换为字符串和数值的是调用一个方法来实现的。麻烦的是JS对象有两个不同的方法来转换。

    第一个方法:toString()方法,返回一个反映这个对象的字符串。

    ({x:1,y:2}).toString() // =>[object object]

    数组返回:将每个数组元素返回并在数组元素后加,合并成一个字符串。

    函数类的toString返回这个函数定义语法;

    日期类:返回一个可读的日期字符串。

    第二个方法:valueOf()

      这个方法未定义具体的作用;

    如果存在原始值返回原始值,对象是复合值,因此一般返回对象本身,而不是返回一个原始值。

    特殊情况:

    对象转换到字符串:

       如果对象具有toString方法,则调用此方法如果此方法返回的是一个原始值则把原始值转换为字符串。

    如果对象没有toString方法,或是此方法不返回一个原始值的话调用valueOf方法,如果valueOf返回一个原始值则转换为字符串。

    如果,valuetoString没法返回原始值,则抛出一个错误。

     

    对象转换到数字:

        如果对象具有valueOf方法,,或是此方法不返回一个原始值的话调用valueOf方法,如果valueOf返回一个原始值则转换为数值。

       

    如果对象不具有valueOf方法,则调用toString方法如果此方法返回的是一个原始值则把原始值转换为数值。

    如果,valuetoString没法返回原始值,则抛出一个错误。

  • 相关阅读:
    一种针对SOA的消息类型架构
    许可方式 到底"非商业用途"意味着什么?
    Windows 7的CMD中 Telnet 无法执行的解决办法
    ASP.NET MVC 2.0 中文正式版发布
    什么是REST?
    架构、框架的区别
    Firefox 火狐下自动刷新的插件 ReloadEvery
    ASP.NET与JQUERY的AJAX文件上传 视频课件+源码Demo
    给吸烟的园友们:一个被烟草行业隐瞒了十年的秘密,烟真不是人吸的
    Echo Server,AsyncSocket,SocketAsyncEvent,SocketAsyncEventArgs,AsyncQueue
  • 原文地址:https://www.cnblogs.com/phplhs/p/4156464.html
Copyright © 2020-2023  润新知