一、预备知识
- JavaScript中的五种基本数据类型:
undefined
,null
,boolean
,number
,string
- 基础数据之间的转换:
其他数据
类型转化为数字
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
。
其余的null
、true/false
、数字
之间进行"+"
操作时,由于都能成功转换为数字
,所以转换后直接进行数值相加。
"+"操作总结
:所有基本类型之间的运算优先级为:string > number > 其他类型
。即存在string
类型时,其他类型
都会转换成string
类型,然后进行字符串连接;存在number
类型且不存在string
类型时,其他类型
都会尝试转换成数字
,成功则数值相加
,失败则结果为:NaN
;string、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!