DEV Community 👩‍💻👨‍💻

Cover image for Javascript Questions

Posted on

Javascript Questions

let a = 3;
let b = new Number(3);
let c = 3;

console.log(a == b);
console.log(a === b);
console.log(b === c);

A: true false true
B: false false true
C: true false false
D: false true true

Answer: C

new Number() is a built-in function constructor. Although it looks like a number, it's not really a number: it has a bunch of extra features and is an object.

When we use the == operator, it only checks whether it has the same value. They both have the value of 3, so it returns true.

However, when we use the === operator, both value and type should be the same. It's not: new Number() is not a number, it's an object. Both return false.

Top comments (1)

develliot profile image

It's not about matching type and value but matching a reference to the same object not an identical object.

For example

a = new Number(3);
b = new Number(3);
c = a

a === b // false
c === a // true

🌚 Life is too short to browse without dark mode