js中常见的隐式类型转换

  1. 比较运算符(>, >=, <, <= )
  • 运算符两边操作数都是数字,则进行数字比较;
  • 运算符两边操作数都是字符串,则将字符的ASCII码进行一一比较(数字<小写字母<大写字母<中文);
  • 运算符一边操作数是数字,一边是字符串,则将字符串强制转换成number,再进行比较(因为字符串和数字都是值类型,应该是强制调用Number方法将字符串转换成数字,一般字符串转换成number类型得到的都是NaN,而NaN与其他所有操作数相比较得到的结果都是false);
  • 运算符有一边操作数是布尔类型,则先将bool值转换成数字,然后再进行比较;
  • 运算符有一边操作数是对象,则进行强制类型转换成数字,得到的结果是NaN,与另一个操作数比较得到的结果肯定是false。
  1. 加法运算符(+)
  • 运算符两边操作数都是数字,则进行数字相加;
  • 运算符两边操作数都是字符串,则进行字符串连接;
  • 运算符一边操作数是数字/null/undefined,一边是字符串,则先将数字/null/undefined转换成字符串,再与另一边的字符串进行连接(注意这里的null和undefined没有对应的toString方法,因此这里将这两种类型的数据强制转化成string类型调用的可能是String这类的方法);
var a = 1;
var s = 'str';
var n = null;
var u = undefined;
var sa = s + a //"str1"
var sn = s + n //"strnull"
var su = s + u //"strundefined"
  • 运算符一边是对象,则会调用其对应的toString 方法,将其转化成“[object Object]”,然后再和另一个操作数进行连接(另一个操作数也会进行相应的转换成string类型);
var obj = {name: 'zyp'};
var a = 1;
var s = 'str'
var u = undefined
var obja = obj + a //"[object Object]1"
var objs = obj + s //"[object Object]1"
var obju = obj + u//"[object Object]undefined"
  • 运算符有一边操作数是symbol类型,进行加法运算的时候会报错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值