诡异的JavaScript

1.undefined 和null比较
undefined == null //true
undefined===null //false
== 返回true 是因为 规范中提到, 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的。
=== 首先判断类型 undefined和null类型不同 直接返回false
2.Number([])
Number([]) //0
Number([12]) //12
Number([1,2])//NaN
Number({}) //NaN

对象到数字的转换
如果对象有valueOf()方法并且返回原始值,javascript将返回值转换为数字作为结果
如果对象有toString()方法并且返回原始值,javascript将返回结果转换为数字作为结果(
{}.toString() //[Object Object]
[].toString() // ‘’
)
否则JavaScript抛出一个类型错误异常(throws a TypeError)
数组继承了默认的valueOf()方法,这个方法返回一个对象而不是一个原始值,因此,数组到数字的转换则调用toString()方法。
空数组转换成为空字符串,所以空字符串转换成为数字0。
含有一个元素的数组转换为字符串的结果和这个元素转换字符串的结果一样。
如果数组只包含一个数字元素,这个数字转换为字符串,再转换回数字

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值