php有隐式转换,javascript 类型隐式转换

+ 什么时候转成数字, 什么时候转成字符串?

+单目 转成数字

+双目 转成字符串(除非是数字+数字=数字)

当运算符“+”两边一个是数字类型,一个是字符串类型时,js引擎规定进行字符串连接运算而非算术加运算

1 + "a" == "1a"

但是:

# 单独一个+, 使数组转成数字, 也可以使字符串转成数字

+[] == 0

+[1] == 1

+[1, 2] => NAN

+"1" == 1

# 双目+运算, 都转成字符串操作!!!

1+[] == "1"

1+[2,3] == "12,3"

# 一步步转

1+1+"a" == "2a"

*, - 都转成数字

对象转换

所有对象转成boolean都是true!!! 包括[]和{}

对象转字符串

先调用toString(), 如果返回字符串或原始值则转成字符串

else 调用valueOf()转成字符串

对象转数字

先调用valueOf(), 如果返回原始值, 则转成数字

else 调用valueOf()

注意

+[] == 0

+{} => NAN // 因为object调用toString()方法得到"[object Object]"

要记住: +双目 转成字符串(除非是数字+数字=数字)

[]+{} == "[object Object]"

""+{} == "[object Object]"

{}+"" == 0 // 相当于+"", 会忽略{}

{}+0 == 0 // 相当于+0

0+{} == "0[object Object]" // 转成字符串!!

{}+{} == +{} => NAN

JavaScript 把第一个 {} 解释成了一个空的代码块(code block)并忽略了它

参考

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值