JS常见的类型转换

ES6前JS中的原始基本数据类型有Number、String、Boolean、Undefined、Null、Object

其它原始值转Boolean

使用Boolean函数将类型转换成布尔类型,在JavaScript中,只有下面几种情况会被转换为false,其他都会被转换为true

        Boolean(false)  // false
        Boolean()       // false
        Boolean(-0)     // false
        Boolean(0)      // false
        Boolean(undefined)      // false
        Boolean(null)       // false
        Boolean(NaN)        // false
        Boolean("")        // false

 Boolean在没有参数的情况下默认为false,需要注意的是非空字符串false是为true的

Boolean("false")  // true

其它原始值转Number

Number函数试图将类型转换成数字类型,如果参数无法被转换为数字,则返回NaN,

如果不传参数,默认返回0,如果有参数,调用一个底层实现的方法ToNumber(value),

        Number(undefined) // NaN
        Number(null) // 0
        Number(NaN) // NaN
        Number(1) // 1
        Number(0) // 0
        Number(true) // 1
        Number(false) // 0

 注意的是null转换为0、undefined和NaN转换number都是NaN、传入数字返回与之相等的值

如果传入的是一个字符串,它会试图将其转换为一个整数或浮点数,而且会忽略所有前导0,如果有一个字符不是数字,结果都返回NaN

       Number("1.2") // 1.2  浮点数正常转换
       Number("-123") // -123 负整数正常转换
       Number("0000123") // 123 前导带0整数,去掉前导0
       Number("0X11")  // 17 0X转换16进制数 
       Number("123 123") // NaN 数字字符中间出现空格
       Number("100a") // NaN 数字字符中间出现字母

鉴于这种沿着的判断,我们一般使用更加灵活的parseInt和parseFloat进行转换

parseInt用来解析整数,parseFloat则可以解析整数和浮点数,parseInt和parseFloat都会跳过任意的前导空格,尽可能解析更多数值字符,并忽略后面的内容,如果第一个非空格字符是非法的数字直接量,则返回NaN

        parseInt("3 abc") //3  去除了前导空格及后面的非数字字符
        parseFloat("3.14 abc") //3.14
        parseInt("-12.34") // -12
        parseInt("0XEF") // 转换成对应16进制数239

Number的特点是转换更加严谨,parseInt和parseFloat的特点是更加灵活,对于不同场景应用

其它原始值转字符串String

我们使用String将类型转换成字符串类型,如果String函数没给参数,则返回空字符串,如果有参数,调用ToString(value),这是一个底层实现的方法,并没有直接暴露出来。

具体的转换规则结合例子看

        String(undefined)  // undefined 
        String(null) // null
        String(false) // false
        String(true) // true
        String() // 空字符串
        String(NaN) // NaN
        String(Infinity) // Infinity
        String(-Infinity) // Infinity
        String(0) // 0
        String(-0) // 0
        String(1) // 1

String函数的参数是Number类型的时候,有两个特殊的值 -0和 -Infinity,这两个值转换后会丢弃前面的-号,其它数字按原样字符输出

参考链接:https://juejin.cn/post/6844904104402092039

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值