美文网首页
JS 里的数据类型转换

JS 里的数据类型转换

作者: 独钓寒江月 | 来源:发表于2019-06-03 18:48 被阅读0次

    1、将其他的数据类型转换成String字符串类型

    (1)toSring()

    toString方法适用于number类型和boolean类型,如:
    
    true.toString(); // "true"
     (11).toString(); // "11"
    

    但是对于null和undefined,使用这种方法会报错,如:

    undefined.toString(); // Cannot read property 'toString' of undefined
    null.toString(); // Cannot read property 'toString' of null
    

    对于object,toSring方法结果不正确,结果永远是"[object Object]"

    (2)String()

    该方法适用于所有数据类型(除了对象,结果同toString()

    String(obj); // "[object Object]"
    String(11); // "11"
    String(true); // "true"
    String(undefined); // "undefined"
    

    (3)+ '' 即使用+运算符加上空字符串(同样对object无效)

    这个才是程序员的日常,这种方法的原理是:‘+’ 运算符只能相加相同的数据类型,如果两边的数据类型不同,他会优先将其转换成字符串来相加。因此就有一个很常见的坑:1+'1'的结果是多少?这句话是按照字符串相加的规则来计算的,所以结果为"11"
    使用此方法转换成字符串的例子如下:

    true+""; // "true"
    undefined+""; // "undefined"
    obj+""; // "[object Object]"
    11+""; // "11"
    

    2、如何将其他的数据类型转换成Number数值类型?

    (1)Number()

    使用Number函数,可以将任意类型的值转化成数值。Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。

    Number(324) // 324
    Number('324') // 324
    Number('324abc') // NaN
    Number('') // 0
    Number(true) // 1
    Number(false) // 0
    Number(undefined) // NaN
    Number(null) // 0
    

    (2)parseInt()

    parseInt方法用于将字符串转为整数。

    parseInt('1',10) // 1
    parseInt('1.23',10) // 1
    

    如果字符串头部有空格,空格会被自动去除。parseInt(' 81') // 81
    如果parseInt的参数不是字符串,则会先转为字符串再转换。
    字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分.

    parseInt('12.34') // 12
    parseInt('15e2') // 15
    parseInt('15px') // 15
    

    如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。

    parseInt('abc') // NaN
    parseInt('.3') // NaN
    parseInt('') // NaN
    parseInt('+') // NaN
    parseInt('+1') // 1
    

    parseInt()方法默认转换成十进制,不过需要注意的是,如果参数本身就是number类型,且是0x开头(16进制),那么parseInt方法会将其以相应的进制转换成十进制展示出来,而0o开头(八进制),0b开头(二进制),都会默认转换成十进制。
    因此,为了防止意外解析成其他进制,建议添加第二个参数按照特定进制解析

    parseInt('0016') //16
    parseInt('0b11') //0
    parseInt('0x16') // 22
    parseInt('0x16',10)   // 0
    

    (3)parseFloat()

    parseFloat方法用于将一个字符串转为浮点数。parseFloat('3.14') // 3.14
    如果字符串符合科学计数法,则会进行相应的转换。

    parseFloat('314e-2') // 3.14
    parseFloat('0.0314E+2') // 3.14
    

    如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分。如:parseFloat('3.14more non-digit characters') // 3.14
    parseFloat方法会自动过滤字符串前导的空格。如:parseFloat('\t\v\r12.34\n ') // 12.34
    如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN。

    parseFloat([]) // NaN
    parseFloat('FF2') // NaN
    parseFloat('') // NaN  注意,parseFloat会将空字符串转为NaN。
    

    parseFloat的转换结果不同于Number函数的地方如下:

    parseFloat(true)  // NaN
    Number(true) // 1
    
    parseFloat(null) // NaN
    Number(null) // 0
    
    parseFloat('') // NaN
    Number('') // 0
    
    parseFloat('123.45#') // 123.45
    Number('123.45#') // NaN
    

    (4)程序员爱用的非常规方法:字符串 - 0

    如:'22' - 0

    (5)更加非常规的方法: + 字符串,这里的+并不是取正值的意思,负数一样可行

    如:+ '22'+ '-011' ; // -11

    3、如何将将其他数据类型转换为Boolean布尔类型?

    (1)常规方法:Boolean(),如:

    Boolean("ss"); // true
    Boolean({}); // true
    

    (2)程序员喜欢用的非常规方法 ,双重取反:!! x ,如:

    !!"ss" ; // true
    !!NaN ; // false
    !!{} ; // true
    

    (3)五个false值,即转换成Boolean后为false的值:

    0 、 NaN 、 null 、 undefined 、‘’(空字符串)

    相关文章

      网友评论

          本文标题:JS 里的数据类型转换

          本文链接:https://www.haomeiwen.com/subject/zhqqxctx.html