Javascript:数据类型转换(隐式)

Javascript:数据类型转换(隐式)

数据类型的隐式转换一般是string转number,以及number转string
之所以成为隐式转换,是因为利用运算符的特性,不显式调用相关函数进行类型转换,而是通过运算表达式的形式让浏览器自动完成类型转换

让我们先来看下以下js代码运行的结果

    let a = 123
    let result = typeof a
    console.log("typeof a = ", result)

    result = a + 1
    console.log("a + 1 = ", result)

    result = true + 1
    console.log("true + 1 = ", result)

    result = true + false
    console.log("true + false = ", result)

    result = 2 + null
    console.log("2 + null = ", result)

    result = 2 + NaN
    console.log("2 + NaN = ", result)

    result = 2 + undefined
    console.log("2 + undefined = ", result)

在这里插入图片描述
从打印的结果来我们应该能得出这样的规律

  • 任何值在进行 + 运算时,都会将非number类型的值转换为number类型后,再进行运算

具体的类型转换情况可以看这个:Javascript:强制类型转换

但是这里并没涉及到与字符串类型值的运算
让我们尝试与字符串类型的值进行运算

    // 两字符串相加 拼串操作
    result = "123" + "456"
    console.log("'123' + '456' = ", result)

    // 任何值和字符串进行+操作,都是转为字符串然后拼串
    result = "1" + 123
    console.log("'1' + 123 = ", result)

    result = 123 + "1"
    console.log("123 + '1' = ", result)

    result = true + "Hello"
    console.log("true + 'Hello' = ", result)

    result = null + "Hello"
    console.log("null + 'Hello' = ", result)

    result = NaN + "Hello"
    console.log("NaN + 'Hello' = ", result)

    result = undefined + "Hello"
    console.log("undefined + 'Hello' = ", result)

可以看到,所有的结果最终都是字符串拼串后的结果
在这里插入图片描述
再次完善总结下

  • 除了字符串类型,任何类型的值进行运算时,都会转换为number类型进行运算,最终结果为number型
  • 字符串类型,进行运算时,实际上都是进行的拼串操作,即转换为string类型进行运算,最终结果为string型

有了以上两点结论,就可以进入我们的正题:数据类型的隐式转换了

转number

    result = +"2"
    console.log("typeof +'2' = ", typeof result)

    result = +true
    console.log("typeof +true = ", typeof result)

    result = +null
    console.log("typeof +null = ", typeof result)

    result = +undefined
    console.log("typeof +undefined = ", typeof result)

在这里插入图片描述

转string

    result = 2 + ""
    console.log("typeof 2 + '' = ", typeof result)

    result = true + ""
    console.log("typeof true + '' = ", typeof result)

    result = null + ""
    console.log("typeof null + '' = ", typeof result)

    result = undefined + ""
    console.log("typeof undefined + '' = ", typeof result)

在这里插入图片描述

补充总结

  • 任何值(除字符串类型)和NaN做运算,结果都是NaN
  • 对数值除0的情况,不会抛出异常,结果为infinity
    result = 1 + NaN
    console.log("1 + NaN = " + result)

    result = "1" + NaN
    console.log("'1' + NaN = " + result)

    result = true + NaN
    console.log("true + NaN = " + result)

    result = null + NaN
    console.log("null + NaN = " + result)

在这里插入图片描述

    result = 4 / null
    console.log("4 / null = " + result)

    result = 4 / 0
    console.log("4 / 0 = " + result)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值