Vi una pregunta aquí -> https://github.com/lydiahallie/javascript-questions#answer-c-1
Considere el siguiente fragmento de código.
let a = 3; let b = Number(3) let c = new Number(3) a == b // true a === b // true // but a===c or b === c // false La situación también se explica en el repositorio anterior, pero me gustaría saber cuáles son las otras características de este objeto c .
También traté de ver sus propiedades o métodos en la consola del navegador, y encontré que es lo mismo que a, los métodos son toFixed, etc
new Number crea un objeto contenedor.
Para obtener su valor primitivo, puede usar Number#valueOf :
let a = 3, b = Number(3), c = new Number(3); console.log(typeof c); console.log(a === c.valueOf()); console.log(b === c.valueOf());Porque
let a = 3; // is a number let b = Number(3) // is a number let c = new Number(3) // is an object a == b // true a === b // true // but a===c or b === c // false¿Está claro?
Cuando typeof el tipo de todos los valores, obtendrá
typeof a => number
typeof b => number
typeof c => object
=== es strict equality , por lo que verificará su type y value
1) Si desea verificar la igualdad, puede usar a == c y b == c .
2) use el método valueOf de c y compárelo con a y b como:
a === c.valueOf(); b === c.valueOf(); let a = 3; let b = Number(3); let c = new Number(3); console.log(typeof a === "number"); // true console.log(typeof b === "number"); // true console.log(typeof c === "number"); // false console.log(typeof c === "object"); // true console.log(a == c); console.log(b == c); console.log(a === c); console.log(b === c); console.log(a === c.valueOf()); console.log(b === c.valueOf()); /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }