¿Cuál es la diferencia entre for..in y for each..in statements en javascript? ¿Hay una diferencia sutil que no sé o es la misma y cada navegador tiene un nombre diferente para ella?¿Cuál es la diferencia entre for..in y for each..in en javascript?
Respuesta
"para cada uno ... en" itera sobre una variable especificada todos los valores de las propiedades del objeto especificado.
Ejemplo:
var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
sum += item;
}
print(sum); // prints "26", which is 5+13+8
"para ... en" itera una variable especificada sobre todas las propiedades de un objeto, en orden arbitrario.
Ejemplo:
function show_props(obj, objName) {
var result = "";
for (var i in obj) {
result += objName + "." + i + " = " + obj[i] + "\n";
}
return result;
}
Nota 03,2013, for each... in
bucles son deprecated. La sintaxis 'nueva' recomendada por MDN es for... of
.
¿Es específico este navegador? –
@Vijay: sí - se introdujo en JavaScript 1.6, es decir, una extensión de Mozilla – Christoph
Lea la excelente documentación de MDC.
El first es para el bucle normal de colecciones y arbitrariamente sobre las propiedades de un objeto.
A para ... en el bucle no itera sobre las propiedades incorporadas. Estos incluyen todos los métodos incorporados de objetos, como el método indexOf de String o el método ToString de Object. Sin embargo, el ciclo iterará sobre todas las propiedades definidas por el usuario (incluidas las que sobrescriban las propiedades integradas).
A para ... en el bucle itera sobre las propiedades de un objeto en un orden arbitrario. Si una propiedad se modifica en una iteración y luego se visita en un momento posterior, el valor expuesto por el bucle será su valor en ese momento posterior. Una propiedad que se elimina antes de que se haya visitado no se visitará más tarde. Las propiedades añadidas al objeto sobre el que se produce la iteración pueden ser visitadas u omitidas de la iteración. En general, es mejor no agregar, modificar o eliminar propiedades del objeto durante la iteración, que no sea la propiedad que se está visitando actualmente; no se garantiza si se visitará o no una propiedad adicional, si se visitará una propiedad modificada antes o después de modificarla, o si se visitará una propiedad eliminada antes de que se elimine.
El latter le permite recorrer las propiedades de un objeto.
Itera una variable especificada sobre todos los valores de las propiedades del objeto. Para cada propiedad distinta, se ejecuta una instrucción especificada.
Esta demostración debería ilustrar la diferencia.
var myObj = {
a : 'A',
b : 'B',
c : 'C'
};
for each (x in myObj) {
alert(x); // "A", "B", "C"
}
for (x in myObj) {
alert(x); // "a", "b", "c"
alert(myObj[x]); // "A", "B", "C"
}
Además de las otras respuestas, tenga en cuenta que for each...in
no es parte del estándar ECMA y además no está incluido en el upcoming edition 3.1. Fue introducido en JavaScript 1.6, que es extension of ECMAScript3 por la Fundación Mozilla.
De acuerdo con la página de Wikipedia vinculada, solo se implementa en Firefox 1.5+ y Safari 3.x (+?).
En otras palabras, es "Firefox solamente". –
- 1. for..in y hasOwnProperty
- 2. ¿Cuál es la diferencia entre: while y: when in clojure?
- 3. customerrors for 401.2 in ASP.NET
- 4. return statement in for bucles
- 5. Javascript ¿por qué FOR IN es una mala práctica?
- 6. "for" loop in velocity template
- 7. IE8 error en la declaración de JavaScript for-in?
- 8. ¿cuál es la diferencia entre i ++ y ++ i for for loop (Java)?
- 9. diferencias entre for-each y plantillas en xsl?
- 10. ¿Cuál es la diferencia entre INTERSECT y WHERE IN?
- 11. ¿Cuál es la diferencia entre .replace y -replace in powershell?
- 12. iteración orden de bucles for..in en Javascript
- 13. Delphi for..in loop set enumeration order
- 14. UIDocumentInteractionController for Open In menu - No funciona
- 15. Fade in/Fade out for MAAttachedWindow
- 16. Objective-C bucle for-in Obtener Índice
- 17. Ruby: ¿Cuál es la diferencia entre un bucle for y cada bucle?
- 18. For-Each y Pointers en Java
- 19. Bundle Script y CSS de Resources in Assemblies for MVC
- 20. ¿Cuál es la diferencia entre $ each (selector) y .Cada $ (selector)()
- 21. Orden de elementos en un bucle "for (... in ...)"
- 22. Java: For-Each loop y referencias
- 23. Python: Combine "if 'x' in dict" y "for i in dict ['x']"
- 24. Diferencia entre 'const ref' y 'in'?
- 25. Diferencia entre i ++ y ++ i en un bucle for
- 26. Diferencia entre EXISTS e IN en SQL?
- 27. ¿Qué hace .shape [] en "for i in range (Y.shape [0])"?
- 28. ¿Por qué no se muestran toString y hasOwnProperty (etc) en bucles for-in en JavaScript?
- 29. Intellij IDEA genera for-each/for atajo de teclado
- 30. ¿Cuál es el nombre para el tipo de constructo [x for x in some_list] en python?
Esto está desaprobado por [¿Cuál es la diferencia entre 'for ... in' y' for ... of' in javascript?] (Http://stackoverflow.com/q/29285897/1048572) – Bergi