| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Data_structures | [Back] [Original] |
Get to know MDN better
Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.
Todas as linguagens de programao tm estruturas de dados embutidas, mas geralmente diferem de uma linguagem para outra. Este artigo tenta listar as estruturas de dados internas disponveis em JavaScript e quais propriedades elas possuem. Estes podem ser usados para construir outras estruturas de dados. Sempre que possvel, so feitas comparaes com outras lnguas.
typeof
JavaScript uma linguagem dinmica com tipos dinmicos. As variveis em JavaScript no esto diretamente associadas a nenhum tipo de valor especfico, e qualquer varivel pode receber (e reatribuir) valores de todos os tipos:
let foo = 42; // foo agora um nmero
foo = "bar"; // foo agora uma string
foo = true; // foo agora um booleano
JavaScript tambm uma linguagem de tipagem fraca, o que significa que permite a converso implcita de tipo quando uma operao envolve tipos incompatveis, em vez de gerar erros de tipo.
const foo = 42; //foo um nmero
const result = foo + "1"; // JavaScript coage foo para uma string, ento ela pode ser concatenada com o outro operando
console.log(resultado); // 421
Coeres implcitas so muito convenientes, mas podem ser uma arma em potencial se os desenvolvedores no pretendem fazer a converso ou pretendem converter na outra direo (por exemplo, string para nmero em vez de nmero para string). Para symbols e BigInts, o JavaScript desativou intencionalmente certas converses de tipo implcito.
O conjunto de tipos na linguagem JavaScript consiste em primitive values e objects.
Valores primitivos (dados imutveis representados diretamente no nvel mais baixo do idioma)
Objetos (colees de propriedades)
Todos os tipos, exceto objetos, definem valores imutveis (ou seja, valores que no podem ser alterados). Por exemplo, Strings so imutveis. Referimo-nos a valores desses tipos como "valores primitivos".
Boolean representa uma entidade lgica e pode ter dois valores: true e false. Consulte Boolean e Boolean para obter mais detalhes.
O tipo Null tem exatamente um valor: null. Consulte null e Null para obter mais detalhes.
Uma varivel que no recebeu um valor tem o valor undefined. Consulte undefined e Undefined para mais detalhes.
ECMAScript tem dois tipos numricos integrados: Number e BigInt junto com o valor relacionado NaN.
O tipo Number um valor IEEE 754 de formato binrio de 64 bits de preciso dupla. capaz de armazenar nmeros de ponto flutuante positivos entre 2^-1074 (Number.MIN_VALUE) e 2^1024 (Number.MAX_VALUE), bem como nmeros de ponto flutuante negativos entre -(2^-1074) e -(2^1024), mas s pode armazenar com segurana inteiros no intervalo -(2^53 1) (Number.MIN_SAFE_INTEGER) para 2^53 1 (Number.MAX_SAFE_INTEGER).
Nota:
Voc pode verificar se um nmero est dentro do intervalo de inteiros seguros usando Number.isSafeInteger(). Fora do intervalo de Number.MIN_SAFE_INTEGER a Number.MAX_SAFE_INTEGER, o JavaScript no pode mais representar inteiros com segurana; eles sero representados por uma aproximao de ponto flutuante de preciso dupla.
Valores fora do intervalo (2^-1074 a 2^1024) so convertidos automaticamente:
Number.MAX_VALUE so convertidos em +Infinity.Number.MIN_VALUE so convertidos em +0.Number.MAX_VALUE so convertidos para -Infinity.Number.MIN_VALUE so convertidos para -0.+Infinity e -Infinity se comportam de forma semelhante ao infinito matemtico, mas com algumas pequenas diferenas; veja Number.POSITIVE_INFINITY e Number.NEGATIVE_INFINITY para detalhes.
O tipo Number tem apenas um inteiro com mltiplas representaes: 0 representado como -0 e +0 (onde 0 um alias para +0). Na prtica, quase no h diferena entre as diferentes representaes; por exemplo, +0 === -0 true. No entanto, voc pode perceber isso quando divide por zero:
console.log(42 / +0); // Infinity
console.log(42 / -0); // -Infinity
Embora um nmero geralmente represente apenas seu valor, o JavaScript fornece operadores bitwise.
Nota: Embora os operadores bit a bit podem ser usados para representar vrios valores booleanos em um nico nmero usando mascaramento de bits, isso geralmente considerada uma m prtica. JavaScript oferece outros meios para representar um conjunto de booleanos (como uma matriz de booleanos ou um objeto com valores booleanos atribudos a propriedades nomeadas). O mascaramento de bits tambm tende a tornar o cdigo mais difcil de ler, entender e manter.
Pode ser necessrio usar essas tcnicas em ambientes muito restritos, como ao tentar lidar com as limitaes do armazenamento local ou em casos extremos (como quando cada bit na rede conta). Esta tcnica s deve ser considerada quando for a ltima medida que pode ser tomada para otimizar o tamanho.
O tipo BigInt uma primitiva numrica em JavaScript que pode representar inteiros com preciso arbitrria. Com BigInts, voc pode armazenar e operar com segurana em grandes nmeros inteiros, mesmo alm do limite de nmeros inteiros seguros.
Um BigInt criado anexando n ao final de um inteiro ou chamando o construtor.
Voc pode obter o maior valor seguro que pode ser incrementado com Numbers usando a constante Number.MAX_SAFE_INTEGER. Com a introduo do BigInts, voc pode operar com nmeros alm do Number.MAX_SAFE_INTEGER.
Este exemplo demonstra, onde incrementar o Number.MAX_SAFE_INTEGER retorna o resultado esperado:
// BigInt
const x = BigInt(Number.MAX_SAFE_INTEGER); // 9007199254740991n
x + 1n === x + 2n; // false porque 9007199254740992n e 9007199254740993n so desiguais
// Number
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2; // true porque ambos so 9007199254740992
Voc pode usar os operadores +, *, -, ** e % com BigInts assim como com Numbers. Um BigInt no estritamente igual a um Number, mas vagamente assim.
Um BigInt se comporta como um Number nos casos em que convertido em booleano: if, ||, &&, Boolean, !.
BigInts no podem ser operados de forma intercambivel com Numbers. Em vez disso, um TypeError ser lanado.
NaN ("Not a Number") normalmente encontrado quando o resultado de uma operao aritmtica no pode ser expresso como um nmero. tambm o nico valor em JavaScript que no igual a si mesmo.
O tipo String do JavaScript usado para representar dados textuais. um conjunto de "elementos" de valores inteiros sem sinal de 16 bits. Cada elemento na String ocupa uma posio na String. O primeiro elemento est no ndice 0, o prximo no ndice 1 e assim por diante. O comprimento de uma String o nmero de elementos nela.
As strings JavaScript so imutveis. Isso significa que uma vez que uma string criada, no possvel modific-la.
No entanto, ainda possvel criar outra string com base em uma operao na string original. Por exemplo:
substring().+) ou concat().Pode ser tentador usar strings para representar dados complexos. Fazer isso traz benefcios a curto prazo:
XMLHttpRequest respostas ao usar responseText, etc.) e pode ser tentador trabalhar apenas com strings.Com convenes, possvel representar qualquer estrutura de dados em uma string. Isso no faz com que seja uma boa ideia. Por exemplo, com um separador, pode-se emular uma lista (enquanto um array JavaScript seria mais adequado). Infelizmente, quando o separador usado em um dos elementos da "lista", a lista quebrada. Um caractere de escape pode ser escolhido, etc. Tudo isso requer convenes e cria uma carga de manuteno desnecessria.
Use strings para dados textuais. Ao representar dados complexos, parse strings e use a abstrao apropriada.
Um Symbol um valor primitivo nico e imutvel e pode ser usado como a chave de uma propriedade Object (veja abaixo). Em algumas linguagens de programao, os smbolos so chamados de "tomos".
Para mais detalhes veja a pgina de referncia Symbol.
Na cincia da computao, um objeto um valor na memria que possivelmente referenciado por um identificador.
Em JavaScript, os objetos podem ser vistos como uma coleo de propriedades. Com a sintaxe literal de objeto, um conjunto limitado de propriedades inicializado; ento as propriedades podem ser adicionadas e removidas. Os valores de propriedade podem ser valores de qualquer tipo, incluindo outros objetos, o que permite construir estruturas de dados complexas. As propriedades so identificadas usando valores key. Um valor key um String value ou um Symbol value.
Existem dois tipos de propriedades de objeto: A data property e a accessor property. Cada propriedade tem attributes correspondentes. Cada atributo acessado internamente pelo mecanismo JavaScript, mas voc pode defini-los por meio de Object.defineProperty() ou l-los por meio de Object.getOwnPropertyDescriptor(). Voc pode ler mais sobre as vrias nuances na pgina Object.defineProperty().
As propriedades de dados associam uma chave a um valor. Pode ser descrito pelos seguintes atributos:
valueO valor recuperado por um acesso get da propriedade. Pode ser qualquer valor JavaScript.
gravvelUm valor booleano que indica se a propriedade pode ser alterada com uma atribuio.
enumervelUm valor booleano que indica se a propriedade pode ser enumerada por um loop for...in. Consulte tambm Enumerabilidade e propriedade de propriedades para saber como a enumerabilidade interage com outras funes e sintaxes.
configurvelUm valor booleano que indica se a propriedade pode ser excluda, pode ser alterada para uma propriedade acessora e pode ter seus atributos alterados.
Associa uma chave com uma das duas funes de acesso (get e set) para recuperar ou armazenar um valor.
Nota: importante reconhecer que o acessor property no o acessor method. Podemos fornecer acessores semelhantes a classes a um objeto JavaScript usando uma funo como valor mas isso no torna o objeto uma classe.
Uma propriedade do acessor tem os seguintes atributos:
getUma funo chamada com uma lista de argumentos vazia para recuperar o valor da propriedade sempre que um acesso de obteno ao valor for executado. Consulte tambm getters. Pode ser indefinido.
definirUma funo chamada com um argumento que contm o valor atribudo. Executado sempre que se tenta alterar uma propriedade especificada. Consulte tambm setters. Pode ser indefinido.
enumervelUm valor booleano que indica se a propriedade pode ser enumerada por um loop for...in. Consulte tambm Enumerabilidade e propriedade de propriedades para saber como a enumerabilidade interage com outras funes e sintaxes.
configurvelUm valor booleano que indica se a propriedade pode ser excluda, pode ser alterada para uma propriedade de dados e pode ter seus atributos alterados.
Um objeto JavaScript um mapeamento entre keys e values. Chaves so strings (ou smbolos), e values pode ser qualquer coisa. Isso torna os objetos um ajuste natural para hashmaps.
Funes so objetos regulares com a capacidade adicional de serem callable.
Ao representar datas, a melhor opo usar o utilitrio Date integrado em JavaScript.
Arrays so objetos regulares para os quais existe uma relao especfica entre propriedades de chave inteira e a propriedade length.
Alm disso, arrays herdam de Array.prototype, que fornece a eles um punhado de mtodos convenientes para manipular arrays. Por exemplo, indexOf() (pesquisando um valor no array) ou [push()](/en- US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) (adicionando um elemento matriz) e assim por diante. Isso torna os Arrays um candidato perfeito para representar listas ou conjuntos.
Typed Arrays apresentam uma viso semelhante a um array de um buffer de dados binrios subjacente e oferecem muitos mtodos que tm semntica semelhante aos equivalentes de array. "Typed array" um termo abrangente para uma variedade de estruturas de dados, incluindo Int8Array, Float32Array, etc. Verifique a pgina typed array para obter mais informaes .
Essas estruturas de dados usam referncias de objetos como chaves. Set e WeakSet representante reenviam um conjunto de objetos, enquanto Map e WeakMap associam um valor a um objeto.
A diferena entre Maps e WeakMaps que no primeiro, as chaves de objeto podem ser enumeradas. Isso permite otimizaes de coleta de lixo no ltimo caso.
Voc pode implementar Maps e Sets voc mesmo. No entanto, como os objetos no podem ser comparados (no sentido de < "menor que", por exemplo), nem o mecanismo expe sua funo de hash para objetos, o desempenho da pesquisa seria necessariamente linear. Implementaes nativas deles (incluindo WeakMaps) podem ter um desempenho de pesquisa que aproximadamente logartmico para tempo constante.
Normalmente, para vincular dados a um n DOM, pode-se definir propriedades diretamente no objeto ou usar atributos data-*. Isso tem a desvantagem de que os dados esto disponveis para qualquer script em execuo no mesmo contexto. Maps e WeakMaps facilitam privately vincular dados a um objeto.
JSON (JavaScript Object Notation) um formato leve de intercmbio de dados, derivado do JavaScript, mas usado por muitas linguagens de programao. JSON cria estruturas de dados universais.
Consulte JSON e JSON para obter mais detalhes.
JavaScript tem uma biblioteca padro de objetos internos.
Por favor, d uma olhada na referncia para saber mais sobre objetos.
typeofO operador typeof pode ajud-lo a encontrar o tipo de sua varivel.
Leia a pgina de referncia para obter mais detalhes e casos extremos.
This page was last modified on 24 de jun. de 2025 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |