隐式类型转换

    console.log([] == 0) // true  和数字比较会转成数字进行比较  Number([]) => Number('') => 0

   console.log([1,2] == '1,2') //true  和字符串比较,会将数组先转成字符串

   console.log([1,2] == '[1,2]') //false   数组 [1,2] 转成字符串为 "1,2"

 

    console.log({} == 0) // false  对象转成数字为NaN

    console.log({} == '[object Object]') //true  对象转成字符串为 '[object Object]'   

 

    console.log({} == {}) // false 对象比较的是地址,所以对象永远不等

    console.log({} == Object) //false  对象比较的是地址,所以对象永远不等

 

    console.log(!{} == 0) // true 取反只能作用于布尔值,对象转成布尔值都为true

    console.log(![] == 0) // true 取反只能作用于布尔值,对象转成布尔值都为true    

    console.log(!{} == ![]) // true 取反只能作用于布尔值,对象转成布尔值都为true,取反后都为false   

 

   

    Number() 函数基于如下规则执行转换。

       布尔值: true转换为1, false转换为0。

       数值: 直接返回。

       null:    返回0。

       undefined:  返回NaN。

       字符串:  应用以下规则。

       1、如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。

             因此,Nnmber("1") 返回 1,Number("123") 返回 123,Number("011") 返回 11 (忽略前面的零)。

       2、如果字符串包含有效的浮点值格式如 "1.1",则会转换为相应的浮点值(同样,忽略前面的零)。

       3、如果字符串包含有效的十六进制格式如 "0xf",则会转换为与该十六进制对应的十进制整数值。

       4、如果是空字符串(不包含字符),则返回 0 。

       5、如果字符串包含除上述情况之外的其他字符,则返回 NaN 。

       对象:调用 valueOf()  方法,并按照上述规则转换返回的值。如果转换结果是 NaN,则调用 toString() 方法,再按照转换字符串的规则转换。

    

    

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值