本文适合 JavaScript 初学者.
一元正号介绍
一元正号运算符 (+) 位于其操作数前面, 计算其操作数的数值, 如果操作数不是一个数值, 会尝试将其转换成一个数值. 尽管一元负号也能转换非数值类型, 但是一元正号是转换其他对象到数值的最快方法, 也是最推荐的做法, 因为它不会对数值执行任何多余操作.
转换字符串
一元正号可以用于转换数值字符串为数字, 比如如下代码:
- + "123" // 123
- + "12.3" // 12.3
也可以转换二进制, 16 进制数值, 自然底数的字符串:
- + "0x11" // 17
- + "0b11" // 3
- + "1e10" // 10000000000
看起来 和 parseFloat 功能类似, 但是 parseFloat 支持字符串后面部分不为数字的情况, 一元正号却不行, 比如:
- parseFloat("1px") // 1
- + "1px" // NaN
如果是空字符串或者多个空格组成的字符串, 一元正号会转换为 0,parseFloat 结果为 NaN
- + ' ' // 0
- parseFloat(' ') // NaN
负数形式字符串也可以转换成数值, 但是对于十六进制 二进制不适用, 对于自然底数适用(parseFloat 都适用):
- +'-123' // 123
- + "-0x11" // NaN
- + "-0b11" // NaN
- + "-1e10" // -10000000000
转换日期对象
一元正号转换日期对象为数字, 得到时间戳, 比如如下代码:
+ new Date(); // 1561020101609
相当于如下代码:
new Date().getTime(); // 1561020101609
转换 null,undefined,NaN
一元正号会把 null 转换为 0,undefined 转换为 NaN. 一元正号施加于 NaN, 结果还是 NaN. 代码如下:
- + null // 0
- + undefined // NaN
- + NaN // NaN
转换布尔值
一元正号会把 true 转换为 1,false 转换为 0:
- + true;// 1
- + false;// 0
转换数组
一元正号会把空数组[], 转换为 0. 如果数组只有一个元素, 切第一个元素为数字或者字符串, 会对第一个元素进行转换, 如果有多个元素, 返回 NaN, 代码如下:
- + []// 0
- + ['123'] // 123
- + [true] // NaN
- + [1,2] // NaN
总结
一元正号运算符对于数字字符串和日期的转换比较适用.
来源: https://www.cnblogs.com/flyfox1982/p/11107309.html