Sé lo que es el for... in
bucle (itera sobre la clave), pero escuché la primera vez sobre for... of
(itera sobre el valor).
Estoy confundido con for... of
loop. No recibí adjetivo. Este es el código a continuación:
var arr = [3, 5, 7];
arr.foo = "hello";
for (var i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (var i of arr) {
console.log(i); // logs "3", "5", "7"
// it is does not log "3", "5", "7", "hello"
}
Lo que obtuve es, for... of
itera sobre los valores de propiedad. Entonces, ¿por qué no registra (regresa) en "3", "5", "7", "hello"
lugar de "3", "5", "7"
? pero el for... in
ciclo itera sobre cada tecla ( "0", "1", "2", "foo"
). Aquí el for... in
ciclo también itera sobre la foo
clave. Pero for... of
no itera sobre el valor de la foo
propiedad, es decir "hello"
. ¿Por qué es así?
Larga historia en resumen:
Aquí tengo un for... of
bucle de consola . Debe iniciar sesión "3", "5", "7","hello"
pero aquí se registra "3", "5", "7"
. Por qué ?
for ... of
se introdujo en el idioma para solucionar los problemas de uso for ... in
con matrices. Array.prototype
podría modificarse de tal manera que haya propiedades adicionales disponibles, lo que hace que no sea seguro iterarlas, ya que podría obtener claves no numéricas que no esperaba.
of
(para ... de bucles) , ya que pregunta sobre un comportamiento específico de la función, en lugar de pedir una descripción general.
for <key> in
for <value> of
for..of