4.1 Valores y Tipos
Como aseguramos en el Capitulo 1, JavaScript tiene valores tipados, no variables tipadas. Las siguientes tipos nativos estan disponibles:
string
number
boolean
null
yundefined
object
symbol
(new to ES6)
JavaScript proporciona un operador typeof que puede examinar un valor y decirle cual es su tipo:
var a;
typeof a; // "undefined"
a = "hello world";
typeof a; // "string"
a = 42;
typeof a; // "number"
a = true;
typeof a; // "boolean"
a = null;
typeof a; // "object" -- extraño, bug
a = undefined;
typeof a; // "undefined"
a = { b: "c" };
typeof a; // "object"
El valor retornado del operador typeof siempre es uno de sus seis (siete en ES6!) valores en tipo string. Por eso, typeof "abc" retorna "string" y no string.
Observe como en este fragmento la variable a contiene cada diferente tipo de valor, y apesar de las apariencias, typeof a no esta preguntado por el "tipo de a", sino mas bien "el tipo de valor actual en a". Solo los valores tienen tipos en JavaScript; las variables tan solo son contenedores para estos valores.
typeof null es un caso interesante, ya que erroneamente este retorna un "objeto", cuando usted espera que este retorne null.
Advertencia: Este es un bug/error antiguo en JavaScript, y uno que probablemente nunca valla a ser arreglado. Demasiado codigo en la web trabaja con este bug/error y por lo tanto arreglarlo podria causar muchos mas bugs!
Note tambien, a =
undefined. Explicitamente definimos a a el valor undefined, aun asi su comportamiento no es diferente de la variable a que no tiene un valor establecido aun, como en la expresion var a; de la linea inicial del framento de codigo. Una variable puede tener un estado de valor "undefined" de mucha maneras, incluyendo funciones que no retornan valores y el uso del operador void.