重学Javascript之类型转换

强制类型转换(显示类型转换)

  • Number()

image.png

  • Boolean()

image.png

  • String()

image.png

image

调用数组、函数、对象和正则表达式的valueOf() 会返回对象本身。日期类定义的valueOf()方法会返回它的一个内部表示:1970年1月1日以来的毫秒数。

image

image

自动类型转换

  • 加号(+) 运算符

    • 作为一元运算符: 常用于将操作数转换为数值
    • 作为二元运算符

      • 如果其中一个为对象,则会将对象转换为原始类型。日期对象通过调用toString()执行转换,其他的通过valueOf()(如果valueOf()返回一个原始类型的值得话)。由于多数对象不具备可用的valueOf()方法,因此他们会通过toString()来进行转换。

      • 对象转换成原始类型的值后,如果其中一个为字符串的话,另一个操作数也要转换成字符串,然后进行字符串的拼接。

      • 否则,两个数都转换为数字(或者NaN),然后进行加法操作。

有一个很有意思的一个,不能以上面的规则理解:

{} + {} : NaN (其实在Chrome控制台,输出的为:"[object Object][object Object]")

{} + [] : 0

这是因为,浏览器会把第一个{} 作为一个空的代码块解析,因此上面的两个分别就等价于: + {} , + [] 因此,得到上面相应的结果。

  • == 运算符

    • 如果一个是null,一个是undefined,则返回true

    • 如果一个是数字,一个是字符串,则将字符串转换为数字,然后再进行比较。

    • 如果一个值为布尔值,将其转换为数字

    • 如果一个数值为对象,另一个为数值或者是字符串,则先将对象通过valueOf()或toString()转换为原始类型,然后再比较。(JS核心的内置类会首先尝试valueOf(),再尝试使用toString().除了日期类,日期类只使用toString()转换。

    • 不满足上面的,均为false

这里要注意: 在 + 或 ==进行的隐式转换中,对象(除了日期类型)都是先尝试使用valueOf()进行转换,然后再尝试使用toString()。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值