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
Numberobject wrapping123, sonumber2returns thisNumberobject as-is as [Number: 123] - The
===operator checks for both value and type. Since a primitive number (123) and aNumberobject wrapping123have different types, the comparison returnsfalse.
- NOTE : Suppose if we use == operator for comparison it gives the output as true because JavaScript attempts to convert the
Numberobject into a primitive for comparison. When an object likenew Number(123)is compared to a primitive, JavaScript calls the object’s.valueOf()method to get its primitive value.