A diferencia de otros entornos de programación, como C++, JavaScript es un lenguaje pobremente estricto con el tipo de las variables, esto quiere decir que una variable puede contener cualquier tipo de datos: nadie nos impediría asignar un texto a una variable que hasta ahora contenía un número o un valor booleano.
Operador typeof
Los tipos básicos son cuatro: indefinido, numérico, string y booleano. Para saber el tipo vigente de una variable se puede utilizar el operador typeof:
var var1; document.write (typeof(var1)); // tipo undefined var1 = 5; document.write (typeof(var1)); // tipo number var1 = "Texto"; document.write (typeof(var1)); // tipo string var1 = 8.5; document.write (typeof(var1)); // tipo number var1 = true; document.write (typeof(var1)); // tipo boolean
El operador typeof simplemente interpreta el contenido de la variable y nos indica el tipo vigente, pero esto no impide que el tipo cambie en la siguiente asignación que se realice a esa variable.
- Indefinido: Si se declara una variable y no se le asigna valor, el tipo es indefinido y su valor también lo es. No se debe confundir esto con el uso de una variable no declarada, ya que el uso de una variable no declarada provoca un error de JavaScript.
- Booleano: El tipo boolean (booleano) puede tener dos valores: true o false.
- Numérico: El tipo number (numérico) abarca a todas las variables que contienen algún tipo de valor numérico, sea entero, decimal, negativo o positivo. Una variable que contiene este tipo de dato puede intervenir en las diferentes operaciones aritméticas que posee el lenguaje.
- Cadena: El tipo string (cadena) abarca a todas las variables que contienen una cadena de caracteres, que se define mediante una delimitación con comillas. Los valores 10 y "10" pueden parecer iguales pero son de distinto tipo, number el primero y string el segundo. Cuando se utiliza una variable de tipo string en una operación aritmética JavaScript intentará convertirla a número para realizar la operación, si no la puede convertir el resultado será NaN (no es un número). Aunque JavaScript intenta resolver el problema con conversiones automáticas no deberíamos confiarnos y tendríamos que intentar utilizar las variables con el tipo adecuado a la operación.