关于js数据类型的隐式转换

1、概念:在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算,即隐式转换。

2、隐式转换规则:

  • 字符串连接符+:只要两边有一个为字符串,则+为字符串连接符。
1 + 'abc'  // '1abc'
  • 算术连接符+:两边都是数字,或者null,boolean,undefined时,则+为算术连接符,当为null,boolean或者undefined时编译器先调用Number()将其转换成数值类型。
1 + null  // 1   1 + Number(null) 
1 + undefined // NaN  1 + Number(undefined)
1 + true  //2    1 + Number(true)
  • 关系运算符:当关系运算符两边一边是字符串时,另一边不是字符串时,会先调用Number()将字符串转换成数值类型;当两边都是字符串时,调用charCodeAt方法转成成Unicode编码字符串再进行比较,如果多个字符串,则从左往右一次对比
'2' > 10  //false
'2' > '10'  //true
true > '0' //true
'abc' > 'b'  //false
null == null //true
undefined == null //true
undefined == undefined //true
  • 复杂类型转换:先使用valueOf获取原始值,如果原始值不是number类型,则使用toString方法转换成字符串类型,再将string转换成number运算。当类型相同时,直接比较,引用类型比较的地址值。
[] == true  //false
[1] == true //true
[1,2] == '1,2'  //true

注意:==才会进行类型隐式转换,===先比较类型是否相同,不同则直接返回false

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值