for...in

Resumen

Itera con una variable especificada sobre todas las propiedades de un objeto, en un orden arbitriario. Para cada una de las propiedades, se ejecuta la sentencia especificada.

Sentencia
Implementada en: JavaScript 1.0, NES 2.0
Versión ECMA: ECMA-262

Sintaxis

for (variable in objeto)
  sentencia
for (var variable in objeto)
  sentencia

Parámetros

variable 
Variable que itera sobre cada propiedad, opcionalmente se declara con la palabra clave var. Esta variable es local a la función, no al bucle. (En otras palabras, cuando el bucle termina, la variable tiene el valor de la última propiedad visitada).
objeto 
Objeto cuyas propieddes se iteran.
sentencia 
Una sentencia a ejecutar por cada propiedad. Para ejecutar múltiples sentencias dentro de un bucle, utilice una sentencia block ({ ... }) para agrupar dichas sentencias.

Descripción

A for...in loop does not iterate over built-in properties. These include all built-in methods of objects, such as String's indexOf method or Object's toString method. However, the loop will iterate over all user-defined properties (including any which overwrite built-in properties).

Un bucle for...in recorre las propiedades de un objeto con orden arbitrario. Si una propiedad se modifica en una iteración y luego se vuelve a visitar, el valor final de la propiedad será el de la última visita. Una propiedad que se borre antes de ser visitada no será visitada más tarde. Las propiedades que se añadan al objeto en la iteración que está teniendo lugar, pueden ser tanto visitadas como omitidas en la iteración. En general, lo mejor es no añadir, modificar o borrar propiedades del objeto mientras dure la iteración sobre él, salvo sean propiedades del objeto que actualmente se esta visitando en la iteración; no existen garantías sobre que una propiedad añadida vaya a ser visitada, ni de si una propiedad modificada va a ser visitada antes de que sea modificada o después, ni siquiera de que si una propiedad es borrada vaya a ser visitada antes de borrarse o después.

Although it may be tempting to use this as a way to iterate over an Array, this is a bad idea. The for...in statement iterates over user-defined properties in addition to the array elements, so if you modify the array's non-integer or non-positive properties (e.g. by adding a "foo" property to it or even by adding a method or property to Array.prototype), the for...in statement will return the name of your user-defined properties in addition to the numeric indexes. Also, because order of iteration is arbitrary, iterating over an array may not visit elements in numeric order. Thus it is better to use a traditional for loop with a numeric index when iterating over arrays.

Ejemplos

Ejemplo: Usando for...in

La siguiente función toma como argumentos un objeto y el nombre de un objeto. Entonces itera sobre todas las propiedades del objeto y devuelve una cadena que lista los nombres de las propiedades y sus valores.

function mostrar_propiedades(objeto, nombreObjeto) {
   var resultado = "";
   for (var i in objeto) {
      resultado += nombreObjeto + "." + i + " = " + objeto[i] + "\n";
   }
   return resultado;
}

Vea También

Etiquetas y colaboradores del documento

Colaboradores de esta página: angeldiaz, Talisker
Última actualización por: angeldiaz,