const number1 = (number = 123) => {
return number;
}
const number2 = (number = 345) => {
return number;
}
const result1 = number1() === number2(new Number(123));
const result2 = number1() == number2(new Number(123))
console.log(result1);
console.log(result2);
Output:
false
true
- number1() : This will give output as 123. Because it calls with no arguments and returns default value 123.
- number2(new Number(123)) : This is called with a
Number object wrapping 123, so number2 returns this Number object as-is as [Number: 123]
- The
=== operator checks for both value and type. Since a primitive number (123) and a Number object wrapping 123 have different types, the comparison returns false.
- NOTE : Suppose if we use == operator for comparison it gives the output as true because JavaScript attempts to convert the
Number object into a primitive for comparison. When an object like new Number(123) is compared to a primitive, JavaScript calls the object’s .valueOf() method to get its primitive value.