The unary plus (+
) precedes its operand and evaluates to its operand. It attempts to convert the operand to a number, if it isn't already.
+expression
Number
.The unary plus (+
) operator is the fastest (and preferred) method of converting something into a number.
It can convert:
true
, false
.null
Values that can't be converted will evaluate to NaN
.
+42 // 42
+"42" // 42
+true // 1
+false // 0
+null // 0
+undefined // NaN
+NaN // NaN
+"foo" // NaN
+{} // NaN
+function(){} // NaN
Note that attempting to convert an array can result in unexpected return values.
In the background, arrays are first converted to their string representations:
[].toString() === '';
[1].toString() === '1';
[1, 2].toString() === '1,2';
The operator then attempts to convert those strings to numbers:
+[] // 0 ( === +'' )
+[1] // 1 ( === +'1' )
+[1, 2] // NaN ( === +'1,2' )