Numbers Can be Objects
var x = 1;
But numbers can also be defined as objects with the keyword new:
var y = new Number(1);
If we check it's type:
var x = 1; var y = new Number(1); console.log(typeof(x)); console.log(typeof(y)); //number //object
The first reason why we should not create number objects is that it slows down execution speed.
The keyword new complicates the code which can produce some unexpected results:
When we use == operator, equal numbers are equal.
For example, if we compare the above number and object it should result in true based on the value.
var x = 1; var y = new Number(1); console.log(x==y); //true
But when we use the === operator, equal numbers are not equal because the === operator expects equality in both type and value.
For example, if we compare the above number and object using === operator, it should result in false based on the value and type.
var x = 1; var y = new Number(1); console.log(x===y); //false
So, the second reason is comparison can give different results.
The third reason is because objects cannot be compared, the numbers objects won't make any sense while comparing.
So, if create 2 objects of numbers and then try to compare them, it will result in false.
var x = new Number(1); var y = new Number(2); console.log(x==y); //false