The unary negation (-
) precedes its operand and negates it, after trying to convert it to number.
-expression
Number
.The unary negation (-
) can convert the same types / values as the unary plus (+
) operator can.
Values that can't be converted will evaluate to NaN
(there is no -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' )