bug收集:专门解决与收集bug的网站
网址:www.bugshouji.com
号运算符,会根据两边的类型不同,而进行不同的隐式转换。本文主要给大家介绍,当 号两边的类型不同时,到底会如何进行隐式转换
示例1
加号两边:都是Number类型, 直接想加
加号两边:都是String类型,字符串连接
加号两边:都是Boolean类型,转成数字,再相加
加号两边:都是Null类型,转成数字相加
加号两边:都是Undefined类型, 转成数字相同
结果如下图:
示例2
Number String : 数据转成字符串, 然后进行连接
Number Boolean : Boolean 转成数字,然后进行相加
Number Null : Null 转成数字0, 然后进行相加
Number undefined: undefined转成数字NaN, 然后进行相加
示例3
String Boolean: Boolean会转成字符串true/false,然后进行连接
String null : null 会转成字符串null,然后进行连接
String undefined: undefined会转成字符串 undefined,然后进行连接
示例4
Boolean undefined: 两者都转成number类型,在进行相加
Boolean Null: 两者都转成number类型,在进行相加
Null undefined: 两者都会转成Number类型,在进行相加
总结
当加号运算符时,String和其他类型时,其他类型都会转为 String;
其他情况,都转化为Number类型
注:
1、undefined 转化为Number是 为’NaN‘, 任何Number与NaN相加都为NaN。 2、其他运算符时, 基本类型都转换为 Number,String类型的带有字符的比如:'1a' ,'a1' 转化为 NaN 与undefined 一样。
3、NaN 不与 任何值相等 包括自身,所以判断一个值 是否为 NaN, 即用 "!==" 即可。 4、转换为 Boolean类型为 false 的有:null,0,'',undefined,NaN,false
参考:https://www.cnblogs.com/ihboy/p/6700059.html