Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JavaScript es un lenguaje de tipado débil o dinámico. Esto significa que no es necesario declarar el tipo
de variable antes de usarla. El tipo será determinado automáticamente cuando el programa comience a
ser procesado. Esto también significa que puedes tener la misma variable con diferentes tipos:
Tipos de datos
Boolean
Null
Undefined
Number
String
y Object
Valores primitivos
Todos los tipos excepto los objetos definen valores inmutables (valores que no pueden ser cambiados).
Por ejemplo, y a diferencia de C, los Strings son inmutables. Hacemos referencia a valores de estos tipos
como "valores primitivos".
Tipo Boolean
Boolean representa una entidad lógica y puede tener dos valores: true, y false.
Tipo Null
El tipo Null tiene exactamente un valor: null. Consultar null y Null para más detalles.
Tipo Undefined
Una variable a la cual no se le haya asignado valor tiene entonces el valor undefined. Consultar
undefined y Undefined para más detalles.
Tipo Number
De acuerdo al standard ECMAScript, sólo existe un tipo numérico: el valor de doble precisión de 64-bits
IEEE 754 (un número entre -(253 -1) y 253 -1). No existe un tipo específico para los números enteros.
Adicionalmente a ser capaz de representar números de coma flotante, el tipo número tiene tres valores
simbólicos: +Infinity, -Infinity, and NaN (Not A Number o No Es Un Número).
Para chequear valores mayores o menores que +/-Infinity, puedes usar las constantes
Number.MAX_VALUE o Number.MIN_VALUE y comenzando con ECMAScript 6 también es posible
chequear si un número está en el rango de coma flotante de doble precisión usando
Number.isSafeInteger() así como Number.MAX_SAFE_INTEGER y Number.MIN_SAFE_INTEGER. Fuera de
este rango los números en javascript ya no son seguros de manipular.
El tipo número sólo tiene un valor entero que cuenta con dos representaciones: 0 es representado como
-0 y +0. ("0" es un alias +0). Esto casi no tiene ningún impacto. Por ejemplo +0 === -0 es true. Sin
embargo, es posible notar esto cuando se divide por cero:
> 42 / +0
Infinity
> 42 / -0
-Infinity
A pesar de que un número generalmente sólo representa su valor, JavaScript cuenta con operadores
binarios. Estos pueden ser usados para representar varios valores Boolean en un mismo número usando
máscaras de bits. Esto usualmente es considerado una mála práctica , sin embargo, JavaScript no ofrece
maneras de representar un conjunto de valores Booleans (como un arreglo de Booleans o un objeto con
valores Boolean asignados a sus propiedades). Usar máscaras de bits también tiende a volver el código
más difícil de leer, entender y mantener. Puede ser necesario usar tales técnicas en ambientes muy
restringidos, como cuando se intenta lidiar con la limitación de almacenamiento local o en casos
extremos cuando cada bit que se transmite por la red cuenta. Esta técnica solo debería ser considerada
como un último recurso para optimizar tamaño.
Tipo String
El tipo String de Javascript es usado para representar datos textuales o cadenas de caracteres. Es un
conjunto de "elementos", de valores enteros sin signo de 16 bits. Cada elemento ocupa una posición en
el String. El primer elemento está en el índice 0, el próximo está en el índice 1, y así sucesivamente. La
longitud de un String es el número de elementos en ella.
A diferencia de lenguajes como C, los strings en JavaScript son immutables. Esto significa que una vez
que una cadena de caracteres es creada no es posible modificarla. Sin embargo es posible crear otra
basandose en una operación de la cadena original. Por ejemplo:
Puede ser tentador usar cadenas para representar datos complejos. Hacerlo trae beneficios a corto
plazo:
Las cadenas de caracteres son fáciles de debuguear (lo que se imprime es siempre lo que contiene la
cadena).
Las cadenas son el denominador común de muchos APIs (campos de entrada, valores de
almacenamiento local, respuestas XMLHttpRequest cuando se usa responseText, etc.) y puede ser
tentador trabajarlo todo sólamente con cadenas de caracteres.
Con convenciones es posible representar cualquier estructura de datos en una cadena. Esto no
necesariamente lo convierte en una buena idea. Por ejemplo, con un separador se pudiera simular una
lista (un arreglo de JavaScript sería mas apropiado). Desafortunadamente cuando el separador es usado
en uno de los elementos de la lista, entonces esta se rompe, habría que escoger entonces un caracter de
escape. Todo esto crea un costo innecesario que hay que mantener.
Usa cadenas para datos textuales. Cuando quieras representar datos complejos, procesa las cadenas y
usa la abstracción apropiada.
Tipo Symbol