discúlpenme publicar otra respuesta, pero me acaba de llegar a través de una búsqueda en Google y lo hizo No encuentro todos los detalles que quería. Ejecutar el siguiente código en Node.js:
var vals = ["1", "1.1", "0", "1.1abc", "", " ", null];
for(var i = 0; i < vals.length; i++){
var ifTest = false;
if(vals[i])
{
ifTest = true;
}
console.log("val=" + vals[i] + ", Number()=" + Number(vals[i])+ ", parseFloat()=" + parseFloat(vals[i]) + ", if()=" + ifTest);
}
da el siguiente resultado:
val=1, Number()=1, parseFloat()=1, if()=true
val=1.1, Number()=1.1, parseFloat()=1.1, if()=true
val=0, Number()=0, parseFloat()=0, if()=true
val=1.1abc, Number()=NaN, parseFloat()=1.1, if()=true
val=, Number()=0, parseFloat()=NaN, if()=false
val= , Number()=0, parseFloat()=NaN, if()=true
val=null, Number()=0, parseFloat()=NaN, if()=false
Algunos notables: comida para llevar
- Si la protección con un if (val) antes de tratar de convertir para numerar, luego parseFloat() devolverá un número excepto en el caso de espacio en blanco.
- El número devuelve un número en todos los casos, excepto para los caracteres no numéricos, aparte del espacio en blanco.
Por favor, siéntase libre de agregar cualquier caso de prueba que me pueda faltar.
Entonces, ¿qué ocurre si hago 'nuevo Número (...)'? ¿Cómo difiere eso? – Neal
'typeof new Number (3) ===" object "', while 'typeof 3 ===" number "' and 'typeof Number (3) ===" number "' – jackwanders
Obtendrás un objeto Number de nuevo , en comparaciones no estrictas se llamará al método 'valueOf', pero fallarán las comparaciones estrictas con los no objetos. Es una mala idea meterse con objetos 'Number' IMO (y por lo que vale, a Crockford tampoco le gustan) –