Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Instruções e declarações
  5. for...in

Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.

View in EnglishAlways switch to English

for...in

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨julho de 2015⁩.

O laçofor...in interage sobre propriedades enumeradas de um objeto, na ordem original de inserção. O laço pode ser executado para cada propriedade distinta do objeto.

Syntax

for (variavel in objeto) {...}
variavel

Uma propriedade diferente do objeto é atribuida em cada iteração.

objeto

Objeto com as propriedades enumeradas.

Descrição

O laço for...in somente iterage sobre propriedades enumeradas. Objetos criados a partir de construtores built-in (arrays e object) herdam propriedades não enumeradas de object.prototype e String.prototype, assim como métodoString'sindexOf() ouObject'stoString(). O laço irá iterar sobre todas as propriedades enumeráveis do próprio objeto e somente aquelas enumeráveis herdadas de construtores de objetos prototype.

Propriedades deletadas, adicionadas ou modificadas

O laçofor...in iterage sobre as propriedades de um objeto em uma ordem arbitrária (veja odelete ). Se uma propriedade é deletada durante a execução do loop, ela se torna indisponível para ser acessada depois. É recomendável não adicionar, remover ou alterar propriedades novas ao objeto durante a execução do laço (durante o loop)

Iteração em Arrays efor...in

Nota:for...in não deve ser usado para iteração em umaArray onde a ordem é importante, visto que ele iterage em uma ordem arbitrária.

Indices de arrays somente se tornam propriedades enumeradas com inteiros (integer). Não há garantia de que utilizando o laço for...in os indices de um array serão retornados em uma ordem particular ou irá retornar todas as propriedades enumeráveis. É recomendável utilizar o laçofor com índices numéricos ouArray.prototype.forEach() ou aindafor...of quando iteragir sobre arrays onde a ordem é importante.

Iteração apenas sobre suas próprias propriedades

Se você quer considerar somente as propriedades do próprio objeto e não as herdadas via prototype, usegetOwnPropertyNames() ou executehasOwnProperty() ou (propertyIsEnumerable

Exemplos

A função seguinte toma como argumento um objeto. O laço for...in iterage sobre todos as propriedades enumeráveis do objeto e retorna uma string com o nome das propriedades e seus respectivos valores.

js
//Objetovar obj = { a: 1, b: 2, c: 3 };//Para prop (propriedade) in obj (objeto) façafor (var prop in obj) {  // ctrl+shift+k (para abrir o console no mozilla firefox)  console.log("obj." + prop + " = " + obj[prop]);}//A saída (output) deverá ser:// "obj.a = 1"// "obj.b = 2"// "obj.c = 3"

A função seguinte ilustra o uso dehasOwnProperty(): as propriedades herdadas não são exibidas.

js
var triangle = { a: 1, b: 2, c: 3 };function ColoredTriangle() {  this.color = "red";}ColoredTriangle.prototype = triangle;var obj = new ColoredTriangle();for (var prop in obj) {  if (obj.hasOwnProperty(prop)) {    console.log("obj." + prop + " = " + obj[prop]);  }}// Output:// "obj.color = red"

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-for-in-and-for-of-statements

Compatibilidade com navegadores

Compatibilidade: Initializer expressions

Anterior ao SpiderMonkey 40, era possível usar uma expressão inicial com o laço for...in, conforme exemplo que se segue:

js
var obj = { a: 1, b: 2, c: 3 };for (var i = 0 in obj) {  console.log(obj[i]);}// 1// 2// 3

Este não é o comportamento padrão e atualmente é ignorado a partir da versão 40 e posteriores e seu uso irá exibir o errorSyntaxError ("for-in loop head declarations may not have initializers"). Outras engines como a v8 (Chrome), Chakra (IE/Edge) e JSC (Webkit/Safari) estão estudando o que fazer com esse comportamento.

Veja também

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp