Beware of JavaScript’s new Number() Constructor
⚠️ Beware of JavaScript’s new Number()
– A Comparison Conundrum
JavaScript lets you create numbers in two ways—but one of them might surprise you!
🚨 The Problem
const num1 = new Number("0");
const num2 = new Number("0");
console.log(num1 == num2); // false
console.log(num1 === num2); // false
Even though both objects represent 0
, the comparison fails. Why? Because new Number()
creates objects, and objects are compared by reference, not by value.
✅ The Solution
1. Use .valueOf()
to compare the actual values:
const num1 = new Number("0");
const num2 = new Number("0");
console.log(num1.valueOf() === num2.valueOf()); // true
2. Better: Use primitive numbers (no new
):
const num1 = 0;
const num2 = 0;
console.log(num1 === num2); // true
💡 Pro Tip
Avoid using new Number()
unless you really need a Number object. Stick with number literals for simpler, safer comparisons.
Happy coding! 🚀