Cast to Number in Javascript using the Unary (+) Operator
The Unary plus is the fastest and preferred way of converting something into a number, because it does not perform any other operations on the number
Unary plus (+)
Unary operators work on single operands. The Unary (+) operator is no different, and it precedes it’s operand.
var positiveOne = +1
Now that looks like useless code. But wait. Let’s look at it’s specification from the ECMA specs:
The unary + operator converts its operand to Number type.
That’s right. So you don’t need to parseInt or parseFloat everything. And you sure don’t need to use Number()!
So, to convert a string or a Boolean, or a Numeric String, you can just use +
+false // 0
+‘123’ // 123
+0xBABE // 47806 (Hexadecimal)
+null // 0
+function(val) {return val } // NaN
The Unary (+) can convert string representations of integers and floats, as well as the non-string values true, false, and null. Integers in both decimal and hexadecimal formats are supported. Negative numbers are supported (though not for hex). If it cannot parse a particular value, it will evaluate to NaN.
However, bear in mind that the Unary (+) does not perform well in certain cases. For example, it doesn’t work as expected on empty strings, alphanumeric strings, empty objects etc.
+'' // NaN
+'123a' // NaN
+{} // NaN
There are of course other ways to cast to Number in Javascript, including but not limited to:
For a full chart of what works when, please refer here. I have taken the liberty to borrow the chart below:
Happy coding!