+号运算符涉及的隐式转换

2022-07-21 19:47:43 浏览数 (1)

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

0 人点赞