GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing developer.mozilla.org — Tipos de datos y estructuras en JavaScript - JavaScript | MDN Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
Tipos de datos y estructuras en JavaScriptTodos los lenguajes de programación tienen estructuras de datos integradas, pero estas a menudo difieren de un lenguaje a otro. Este artículo intenta enumerar las estructuras de datos integradas disponibles en JavaScript y las propiedades que tienen. Estas se pueden utilizar para construir otras estructuras de datos. Siempre que es posible, se hacen comparaciones con otros lenguajes. Tipado dinámicoJavaScript es un lenguaje débilmente tipado y dinámico. Las variables en JavaScript no están asociadas directamente con ningún tipo de valor en particular, y a cualquier variable se le puede asignar (y reasignar) valores de todos los tipos: js Estructuras y tipos de datosEl último estándar ECMAScript define nueve tipos:
Ten en cuenta que el único propósito valioso del uso del operador Valores primitivosTodos los tipos, excepto los objetos, definen valores inmutables (es decir, valores que no se pueden cambiar). Por ejemplo (y a diferencia de C), las cadenas son inmutables. Nos referimos a los valores de estos tipos como "valores primitivos". Tipo
|
| Atributo | Tipo | Descripción | Valor predeterminado |
|---|---|---|---|
| [[Value]] | Cualquier tipo de JavaScript | El valor recuperado por un captador de acceso get a la propiedad. |
undefined |
| [[Writable]] | Boolean |
Si es false, el [[Value]] de la propiedad no se puede cambiar. |
false |
| [[Enumerable]] | Boolean |
Si es true, la propiedad se enumerará en bucles for...in. Consulta también Enumerabilidad y posesión de propiedades. |
false |
| [[Configurable]] | Boolean |
Si es false, la propiedad no se puede eliminar, no se puede cambiar a una propiedad de acceso descriptor y los atributos que no sean [[Value]] y [[Writable]] no se pueden cambiar. |
false |
Atributos obsoletos (a partir de ECMAScript 3, renombrado en ECMAScript 5).
| Atributo | Tipo | Descripción |
|---|---|---|
Read-only |
Boolean |
Estado inverso del atributo ES5 [[Writable]]. |
DontEnum |
Boolean |
Estado inverso del atributo ES5 [[Enumerable]]. |
DontDelete |
Boolean |
Estado inverso del atributo ES5 [[Configurable]]. |
AccessorAsocia una clave con una de las dos funciones de acceso (get y set) para recuperar o almacenar un valor y tiene los siguientes atributos:
| Atributo | Tipo | Descripción | Valor predeterminado |
|---|---|---|---|
| [[Get]] | Objeto Function o undefined |
La función se llama con una lista de argumentos vacía y recupera el valor de la propiedad cada vez que se realiza un acceso al valor. Consulta también get. |
undefined |
| [[Set]] | Objeto Function o undefined |
La función se llama con un argumento que contiene el valor asignado y se ejecuta siempre que se intenta cambiar una propiedad específica. Consulta también set. |
undefined |
| [[Enumerable]] | Boolean |
Si es true, la propiedad se enumerará en bucles for...in. |
false |
| [[Configurable]] | Boolean |
Si es false, la propiedad no se puede eliminar y no se puede cambiar a una propiedad de datos. |
false |
Un objeto JavaScript es una asociación entre claves y valores. Las claves son cadenas (o Symbols), y los valores pueden ser cualquier cosa. Esto hace que los objetos se ajusten naturalmente a hashmaps.
Las funciones son objetos regulares con la capacidad adicional de ser invocables.
Al representar fechas, la mejor opción es utilizar la utilidad Date incorporada en JavaScript.
Los arreglos son objetos regulares para los que existe una relación particular entre las propiedades de clave entera y la Propiedad length.
Además, los arreglos heredan de Array.prototype, que les proporciona un puñado de convenientes métodos para manipular arreglos. Por ejemplo, indexOf (buscando un valor en el arreglo) o push (agrega un elemento al arreglo), y así sucesivamente. Esto hace que el Array sea un candidato perfecto para representar listas o conjuntos.
Los Arreglos tipados son nuevos en JavaScript con ECMAScript 2015 y presentan una vista similar a un arreglo de un búfer de datos binarios subyacente. La siguiente tabla ayuda a determinar los tipos de datos equivalentes en C:
| Tipo | Intervalo de valores | Tamaño en bytes | Descripción | Tipo de IDL web | Tipo C equivalente |
|---|---|---|---|---|---|
Int8Array |
-128 a 127 |
1 | Dos enteros complementarios de 8 bits con signo | byte |
int8_t |
Uint8Array |
0 a 255 |
1 | Entero de 8-bit sin signo | octet |
uint8_t |
Uint8ClampedArray |
0 a 255 |
1 | Entero de 8 bits sin signo (sujeto) | octet |
uint8_t |
Int16Array |
-32768 a 32767 |
2 | Dos enteros complementarios de 16 bits con signo | short |
int16_t |
Uint16Array |
0 a 65535 |
2 | Entero de 16 bits sin signo | Short sin signo |
uint16_t |
Int32Array |
-2147483648 a 2147483647 |
4 | dos enteros complementarios de 32 bits con signo | long |
int32_t |
Uint32Array |
0 a 4294967295 |
4 | Enteros de 32 bits sin signo | long sin signo |
uint32_t |
Float32Array |
1.2×10-38 a 3.4×1038 |
4 | Número de coma flotante IEEE de 32 bits (7 dígitos significativos, p. ej., 1.1234567) |
float sin restricciones |
float |
Float64Array |
5.0×10-324 a 1.8×10308 |
8 | Número de coma flotante IEEE de 64 bits (16 dígitos significativos, p. ej., 1.123...15) |
doble sin restricciones |
double |
BigInt64Array |
-263 a 263-1 |
8 | Dos enteros complementarios de 64 bits con signo | bigint |
int64_t (long long con signo) |
BigUint64Array |
0 a 264-1 |
8 | Entero de 64 bits sin signo | bigint |
uint64_t (long long sin signo) |
WeakMaps, WeakSetsEstas estructuras de datos, introducidas en ECMAScript Edition 6, toman referencias a objetos como claves. Set y WeakSet representan un conjunto de objetos, mientras que Map y WeakMap se asocian un valor a un objeto.
La diferencia entre Maps y WeakMaps es que en el primero, las claves de objeto se pueden enumerar. Esto permite la optimización de la recolección de basura en el último caso.
Se podrían implementar Maps y Sets en ECMAScript 5 puro. Sin embargo, dado que los objetos no se pueden comparar (en el sentido de < "menor que", por ejemplo), el rendimiento de búsqueda sería necesariamente lineal. Las implementaciones nativas de ellos (incluidos los WeakMaps) pueden tener un rendimiento de búsqueda que es aproximadamente logarítmico al tiempo constante.
Por lo general, para vincular datos a un nodo DOM, se pueden establecer propiedades directamente en el objeto o usar atributos data-*. Esto tiene la desventaja de que los datos están disponibles para cualquier script que se ejecute en el mismo contexto. Los Maps y WeakMaps facilitan la vinculación privada de datos a un objeto.
JSON (Java Script Object Notation) es un formato ligero de intercambio de datos, derivado de JavaScript, pero utilizado por muchos lenguajes de programación. JSON crea estructuras de datos universales.
JavaScript tiene una biblioteca estándar de objetos integrados.
Échale un vistazo a la referencia para conocer más objetos.
typeofEl operador typeof te puede ayudar a encontrar el tipo de tu variable.
Lee la página de referencia para obtener más detalles y casos extremos.
Esta página se modificó por última vez el por colaboradores de MDN.