Todos usamos Javascript a diario y sabemos que es un lenguaje de programación que parece sencillo, sin embargo no es así. Vamos a revisar cuáles son sus tipos básicos y cómo se relacionan entre ellos. Algo que en un primer momento nos puede parecer trivial y que no lo es para nada.
Los tipos de JavaScript
Javascript soporta seis tipos core en el lenguaje:
-
string
-
number
-
boolean
-
null
-
undefined
-
object
Esto nos puede parecer extraño en un primer momento pero vamos a comprobarlo:
var cadena="hola";
var numero=5;
var verdadero=true;
var nodefinido=undefined;
var nulo=null;
var objeto={};
console.log(typeof(cadena));
console.log(typeof(numero));
console.log(typeof(verdadero));
console.log(typeof(nodefinido));
console.log(typeof(objeto));
console.log(typeof(nulo));
Esto nos imprimirá el siguiente resultado:
Todos las variables nos devuelven el tipo concreto al que pertenecen salvo el tipo “null” que devuelve "object". Null sigue siendo es un tipo diferente y esta peculiaridad esta definida a nivel de la especificación. Sin embargo todos nosotros tenemos en mente que existen otros muchos tipos de variables en Javascript.
-
String
-
Boolean
-
Number
-
Date
-
Array
-
Object
-
Function
-
RegEx
-
Error
Estos no son tipos core del lenguaje sino que se les denomina “Built-In Objects” y aunque existen no son tipos core de Javascript sino que son especializaciones del tipo "object" que como acabamos de ver es uno de los tipos fundamentales.
Esto lo podemos comprobar creando en código un objeto de tipo Date:
var fecha= new Date();
console.log(fecha);
console.log(typeof(fecha));
La consola muestra el resultado en el que el "Built-in Object" fecha es un "object" y no un Date.
Javascript y coerción
Por último, lo más difícil de entender a veces es el concepto de "coerción" en el que se apoya Javascript para convertir un tipo en otro dependiendo de sus necesidades. Para entender este concepto nos vamos a construir dos cadenas de distinta forma y ver a qué tipo pertenecen.
var nuevaCadena="hola";
console.log(typeof(nuevaCadena));
var nuevaCadenaObjeto= new String ("hola");
console.log(typeof(nuevaCadenaObjeto));
//coercion
console.log(nuevaCadena.length);
Podemos ver como cada cadena es de un tipo diferente. La variable "nuevaCadena" es de tipo "string" (tipo fundamental) mientras que "nuevaCadenaObjeto" es de tipo "object" y hace referencia a uno de los "Built-in Objects" el "String"( mayúscula). Para complicarlo aún más podemos invocar a la propiedad ".length" en la variable nuevaCadena (no es un objeto). JavaScript usará la coercióon y convertirá el tipo "string" en tipo "object" con el subtipo "String" y nos dará de forma automática acceso a la propiedad.
En Genbeta Dev | Speaking Javascript