• JS数据类型转换记录


    一、数据类型:

      原始数据类型:Boolean/ Null / Undefined / Number / String / Symbol(ES6中新增数据类型)

      对象:Object

    二、类型转换

      1)显示类型转换:

      a. Number函数

      b. String函数

      c.Boolean函数

          2) 显示类型转换 Number函数

      当原始类型转换时,分别对应以下情况:

        数值:转换后还是原来的值。

        字符串:如果可以被解析为数值,则转换为相应的数值,否则得到NaN,空字符串转换为0

        布尔值:true转成1, false转成0

        undefined: 转成NaN

        null: 转成0

      当为对象类型转换时,遵循以下方式:

        a.先调用对象自身的valueOf方法,如果改方法返回原始类型的值(数值/字符串/boolean等),则直接对该值使用  Number方法,不在进行后续步骤。

                b.如果valueOf方法返回复合类型的值,在调用对象自身的toString方法,如果toString方法返回原始类型的值,则对该值使用Number方法,不在进行后续步骤。

        c.如果toString方法返回的时复合类型的值,则报错.    

        如例: var a = {b: 1}; Number(a); // 输出NaN,按照如上步骤规则,则

          首先a.valueOf() 输出{b: 1}, 返回不是原始数据类型,则调用toString方法,返回“[object Object]”, 返回字符串类型,Number('[object, object]') 则输出NaN。

        3)显示类型转换 String函数

        当转换为原始类型数据时,按照如下规则:

          数值:转换为相应的字符串

          字符串: 转换后还是原来的值

          布尔值: true转换为‘true’, false转换为‘false’

          undefined: 转换为“undefined”

                      null: 转换为‘null’

        当转换类型为对象类型时,按照如下规则转换:     

          a.先调用toString方法,如果toString返回的时原始数据类型,则对该值使用toString方法,不在进行以下步骤。   

          b.如果toString方法返回对是复合类型的值,在调用valueOf方法,如果valueOf方法返回的是原始数据类型的值,则对该值使用String方法,不在进行以下步骤。

          c.如果valueOf方法返回的是复合类型的值,则报错。

        4)显示类型转换 Boolean函数

        当转换数据为原始数据类型是,按照如下规则转换

        当为null、undifined、NaN、0、‘’,转换为false,其他转换都为true

        5)隐式类型转换,如四则运算/判断语句/Native调用,转换与以上转换规则相同.

    输出以下结果:

      [] + [];

      [] + {};

      {} + [];

      {} + {};

      true + true;

      1 + {a: 1};

        

        

  • 相关阅读:
    字符串拆分成泛型列表
    第一次写博客
    获取最长的增长列表
    oracle 一些小资料
    XML 序列化出错
    Redis学习(一)
    SQL和NoSQL的区别
    SpringBoot中文乱码解决方法
    从visual studio 2012生成预处理代码&汇编码
    近期流水账
  • 原文地址:https://www.cnblogs.com/lzj0824/p/8029861.html
Copyright © 2020-2023  润新知