Tipos de datos en JavaScript
                En JavaScript existen básicamente seis tipos de datos primitivos, objetos y funciones. Adicional a esto existe un tipo especial de datos primitivo llamado null y un tipo agregado en ECMA 2015 llamado Symbol. A continuación, veremos como identificar cada uno de estos tipos de datos y algunos ejemplos muy sencillos.
Tipos primitivos
Los tipos primitivos son un tipos de datos que guardan un solo valor. Entre estos tipos de datos tenemos: undefined, Boolean, Number, String, BigInt, Symbol e incluso null el cuál es un tipo especial.
| Tipo | Descripción | Valor | 
|---|---|---|
Undefined | Variables no definidas | undefined | 
Boolean |  Entidad lógica de dos valores | false true | 
Null |  Ausencia de un valor de objeto | null | 
Number |  Números enteros | un número | 
BigInt | Número enteros (rango grande) | un número grande | 
String |  Cadenas de caracteres | una cadena | 
En los siguientes ejemplos utilizamos typeof para ver el tipo específico de dato en Javascript.
typeof undefined      // undefined
typeof true           // "boolean"
typeof null           // "object"
typeof 40             // "number"
typeof 12n            // "bigInt"
typeof "hola mundo"   // "string"
 Nota que el valor null es en realidad un object.
Objetos
Un objeto representa datos estructurados e instrucciones para trabajar con esos datos. Es una colección de pares llave-valor en donde los valores pueden ser otros tipos de datos. Veamos el siguiente ejemplo.
{
   model: 'Mazda',
   year: 2020
} Sin embargo, los arrays también son objetos.
typeof [1,2,3]    // "object" Funciones
Las funciones son fragmentos de código que pueden ser llamados desde otras partes del código.
function foo() {
   return 'Hello';
}
foo()   // 'Hello'
typeof foo    // "function"
 Al igual que los demás tipos es posible obtener el tipo específico con el operador typeof.
typeof foo    // "function"
 Símbolos
Los símbolos son conjuntos de valores de tipo no string. Usualmente son utilizados para crear llaves únicas en objetos aunque también tienen otros usos.
let id = Symbol("id");
let user = {
   name: "John",
   [id]: 123
}
let id2 = Symbol("id");
user[id2] = 100;
user[id];      // 123
user[id2];     // 100
 Para obtener el tipo de dato podemos utilizar también el operador typeof.
typeof id     // "symbol"