JavaScript中不同类型数据之间的加减操作

时间:2022-06-05 19:34:43

一、预备知识

  1. JavaScript中的五种基本数据类型:undefined, null, boolean, number, string
  2. 基础数据之间的转换:

    其他数据类型转化为数字
    undefined NaN
    null 0
    false 0
    true 1
    数字字符串 相应的数字
    不能转化的字符串 NaN

   其他类型转化为字符串就比较简单了:

undefined -> undefined
null -> null
false -> false
true -> true
数字 -> 数字字符串

二、不同类型数据之间的"+" "—" 操作

不同类型之间的"+"操作:

:下面所有"+"操作,前后相加的顺序没有要求

1.string + 其他类型

alert("abc" + undefined);  //abcundefined
alert("abc" + null);  //abcnull
alert("abc" + false);  //abcfalse
alert("abc" + true);  //abctrue
alert("abc" + 123);  //abc123

总结:直接进行字符串连接操作。

2.number + 其他类型

alert(123 + undefined);  //NaN
alert(123 + null);  //123
alert(123 + false);  //123
alert(123 + true);  //124

总结:其他类型(除string以外)尝试转换成number类型,成功则数值相加,失败则结果为NaN

3.除string、number以外的类型之间的"+"操作:

alert(undefined + null);  //NaN
alert(undefined + false);  //NaN
alert(undefined + true);  //NaN
alert(undefined + 123);  //NaN

总结:undefined + null、boolean、number,数据都会尝试转换成number类型,由于undefined转换结果为NaN,所以上述所有相加结果全为NaN

其余的nulltrue/false数字之间进行"+"操作时,由于都能成功转换为数字,所以转换后直接进行数值相加。

"+"操作总结:所有基本类型之间的运算优先级为:string > number > 其他类型。即存在string类型时,其他类型都会转换成string类型,然后进行字符串连接;存在number类型且不存在string类型时,其他类型都会尝试转换成数字,成功则数值相加,失败则结果为:NaNstring、number类型都不存在时,也是尝试转换成数字。

不同类型之间的"—"操作:

:下面所有"—"操作,前后相减的顺序没有要求

alert(123 - null);  //123
alert(123 - undefined);  //NaN 
alert(123 - false);  123
alert(123 - true);  //122
alert(null - undefined);  //NaN
alert(null - false);  //0
alert(null - true);  //-1
alert("abc" - 12);  //NaN
alert("123" - 100);  //23

总结:不同类型之间进行"—"运算时,所有数据类型都尝试转换为数字,成功则进行数值相加,失败则结果为NaN


三、一些小技巧

利用上面"+" "—" 运算的性质实现:

把一个变量转换成字符串:变量 + "";
把一个变量转换成数字:变量 — 0;


四、"+" 的神奇功效

在数据前添上 "+" ,可以让数据尝试转换为数字:

alert(+"123"+1);  //124
alert(+"abc"+1);  //NaN

其中"+"的功能和Number()函数是相同的。



结语:文章有错误或不足,希望理性指正,一起进步哦!

参考文章:https://www.cnblogs.com/m-v-p/p/3546083.html

END!