一元加号(+)在其操作数之前,并求值为其操作数。如果尚未将操作数转换为数字,它将尝试将其转换为数字。
+expression
一个Number。
一元加号(+)运算符是将某物转换为数字的最快(也是首选)方法。
它可以转换为:
整数(十进制或十六进制)和浮点数的字符串表示形式。
布尔值:true,false。
null
无法转换的值将计算为NaN。
+42 // 42 +"42" // 42 +true // 1 +false // 0 +null // 0 +undefined // N +NaN // N +"foo" // N +{} // N +function(){} // N
请注意,尝试转换数组可能会导致意外的返回值。
在后台,首先将数组转换为其字符串表示形式:
[].toString() === ''; [1].toString() === '1'; [1, 2].toString() === '1,2';
然后,运算符尝试将这些字符串转换为数字:
+[] // 0 ( === +'' ) +[1] // 1 ( === +'1' ) +[1, 2] // N ( === +'1,2' )