• JavaScript中各种转换规则记录


    阅读目录

    前言

    Boolean转换规则

    Number转换规则

    String转换规则

    Boolean转换规则

    结束语

     

    前言

          在javascript中,我学习中比较混乱的就是各种数值类型之间的转换,所以写这篇文章作为记录,如果文中有任何不正确的地方,请大家尽量拍砖,相互学习,共同进步。

    Boolean转换规则

      在javascript中,Boolean是内部的基本包装类型之一,它是一个函数,可以用来构建布尔类型的值:true or false。构建出来的实例,可以调用Boolean提供的方法。除此之外,Boolean也是一个函数,可以用来进行数据转换为布尔值。可以对任何数据类型的值调用Boolean函数,而且都会返回一个Boolean值,具体转换规则如下:

    数据类型

    转换为true的值

    转换为false的值

    Boolean

    true

    false

    String

    任何非空字符串

    “”/’’(空字符串)

    Number

    任何非零数字值(包括无穷)

    0 和NaN

    Object

    任何对象

    Null

    Undefined

    不适用

    Undefined

     Number转换规则

    对于数值类型,有3个转换函数:Number、parseInt、parseFloat。Number可以用于任何数据类型,后面两个则专门用于把字符串转换成数值。

    Number()转换规则 :

    1、  如果是Boolean值,true和false将被转换为1和0;

    2、  如果是数字值,就就是简单的传入和返回;

    3、  如果是null,则返回0;

    4、  如果是undefined,返回NaN;

    5、  如果是字符串,遵循下列规则:

    1)         如果字符串只包含数字,则转换为十进制值,当然,前导零会被忽略。”000123”->123

    2)         如果字符串中包含有效的浮点格式,则转为对应的浮点值,前导零也会被忽略

    3)         如果包含有效的十六进制格式,则转为大小相同的十进制数

    4)         如果是空的,则转换为0

    5)         如果包含除以上格式之外的字符,则将其转换为NaN。

    6、  如果是对象,则调用对象的valueOf方法,然后按照前面的规则转换返回的值,如果转换的结果是NaN,则调用对象的toString()方法,再按照前面的规则返回字符串。

    这么多规则,光看文字就晕了,看看几个例子:

    var num1 = Number(“Hello”);//NaN
    var num2 = Number(“”);//0
    var num3= Number(“000111”);//111
    var num4 = Number(“true”);//1
    var num5 = Number(null);//0
    var num6 = Number(undefined);//NaN
    var num7= Number(22);//22

    Number()用来转换实在太复杂了,所以一般会用parseInt和parseFloat。

     parseInt()转换规则

    parseInt() 会忽略字符串前面的空格,规则如下:

    1、  如果是数字,则简单的传入传出,但是浮点数的话,则只取整数部分

    2、  如果是字符串,第一个字符不是数字或者符号,则返回NaN,

    3、  空字符串,返回NaN

    4、  如果第一字符是数字字符,则会继续解析,直到遇到一个非数字字符,

    5、  如果字符串是浮点数的形式,也只取整数部分

    6、  如果第一个是数字字符,并且符合八进制和十六进制的写法(0和0x),则会相应的当成对应的进制数转换。直到遇到一个非数字字符

    看下例子,印象比较深刻

    var num1 = parseInt(22);//22
    var num2 =parseInt(22.6);//22
    var num3= parseInt(“”);//NaN
    var num4 = parseInt(“ddd12”);// NaN
    var num5 = parseInt(‘124dd’);//124
    var num6 = parseInt(‘0xA’);//10
    var num7 = parseInt(‘070’);//八进制 56
    var num8= parseInt(‘70‘);//十进制 70
    var num9= parseInt(‘0xf’);//十六进制 15

    也可以明确指定要转换的进制数,只要在第二个参数传入即可

    var num1= parseInt(‘0xaf’,16);// 十六进制175
    var num2= parseInt(‘af’,16);// 十六进制175 指定进制,就可以不带0x
    var num3= parseInt(‘af’);// 单纯字符‘af‘,返回NaN
    var num4 = parseInt(‘10’,2);// 2 二进制解析
    var num5 = parseInt(‘10’,8);// 8 八进制解析
    var num6 = parseInt(‘10’,10);// 10 十进制解析
    var num7 = parseInt(‘10’,16);// 16 十六进制解析
    var num8 = parseInt(‘010’);// 8 按八进制
    var num8 = parseInt(‘010’,8);// 8 按八进制
    var num9 = parseInt(‘010’,10);// 10 按十进制

    parseFloat转换规则

    parseFloat 和parseInt大部分类似,也是从第一个字符开始解析。但是有如下特点

    1、  只有第一个小数点有效,第二个小数点无效,因此后面字符串将被忽略

    2、  parseFloat只解析十进制,不解析八进制和十六进制,也就是说他会把010解析成10,0xa解析成0

    例子:

    var num1= parseFloat(‘1456dfd’);// 1456
    var num2= parseFloat (‘0xa’);// 0
    var num3= parseFloat (’22.5’);//22.5
    var num4 = parseFloat (‘1.2.3’);// 1.2
    var num5 = parseFloat (‘098.5’);//98.5
    var num6 = parseFloat (‘3.21e7’);// 3.2100000

    String 转换规则

    在javascript中的基本数据类型中大部分都有toString方法,但是null和undefined没有。

    数值的toString方法可以传入基数:

    var num =10;
    alert(num.toString());//’10’
    alert(num.toString(2));//’1010’
    alert(num.toString(8));//’12’
    alert(num.toString(10));//’10’
    alert(num.toString(16));//’a’

    基于null和undefined没有toString方法,可以使用String(),规则如下:

    1、  如果值有toString方法,则调用该方法

    2、  如果是null则返回”null”

    3、  如果是undefined,则返回’undefined’

  • 相关阅读:
    数论练习(5)——青蛙的约会(扩gcd)
    数论练习(4)——同余方程(扩gcd)
    数论练习(3)——相同后三位(快速幂)
    s if标签
    spring获取webapplicationcontext,applicationcontext几种方法详解
    Java精确测量代码运行时间 代码执行时间 纳秒 nanoTime
    java中使用二进制进行权限控制
    hibernate注解配置举例说明
    js日期处理
    Spring 简单而强大的事务管理功能
  • 原文地址:https://www.cnblogs.com/top5/p/2408327.html
Copyright © 2020-2023  润新知