Number
En JS no hay diferencia entre números enteros y decimales. El tipo de dato para cualquier número es number. Además, se pueden representar los números en notación exponencial, además de la notación decimal clásica.
Los números son objetos
En JavaScript todo es un objeto, incluso los valores de tipos básicos o primitivos, cosa que no ocurre en otros lenguajes (Java, C++, etc.). Esto se puede comprobar si ponemos un punto después de escribir el número (si es un número entero debemos envolverlo entre paréntesis), lo que nos permite acceder a algunos métodos o propiedades.
Existe también la clase Number, desde la cual podemos acceder a propiedades y métodos estáticos bastante útiles.
Hay también valores especiales para los números fuera de rango (Infinito y -Infinito). Para saber si un número es finito o no, podemos comparar con el valor Infinity, o -Infinity. También existe una función llamada isFinite(value) que nos devuelve falso cuando el valor es Infinity o -Infinity.
No deberíamos utilizar Number como constructor, ej: new Number(34), para crear números, ya que es más lento, y además genera comparaciones erróneas entre números al no utilizar el valor primitivo, sino la referencia a memoria, para compararlos.
Conversión a tipo 'number'
Puedes convertir un dato de otro tipo a number usando la función global Number(value). También puedes añadir el signo '+' antes de la variable para forzar la conversión, ya que el dicho signo solo se puede aplicar a un valor de este tipo.
Valor especial NaN
Cuando intentamos convertir un dato a número y eso no es posible (por ejemplo una cadena que no represente un número), se devuelve el valor especial NaN (Not a Number). Cualquier operación aritmética con este valor produce a su vez otro valor NaN.
Para comprobar si el resultado de una conversión u operación es NaN, tenemos la función Number.isNaN(valor), que nos devolverá un valor booleano indicando si es un número válido o no.