Tengo una matriz como esta:
let arr = ["zero", "one", "two"]; // I'm an indexed array! arr.foo = "bar";Si trato de acceder a arr.foo, es accesible:
console.log(arr.foo); // Returns "bar"Sin embargo, si hago un bucle sobre esta matriz con un bucle for como este:
for (let i = 0; i <= arr.length; i++) { console.log(`${i} => ${arr[i]}`); }Entiendo esto:
0 => zero 1 => one 2 => two 3 => undefinedAdemás, si uso for in loop como este:
for (let y in arr) { console.log(y); }Obtengo índices, incluido foo:
0 1 2 fooPero si uso for of así:
for (let z of arr) { console.log(z); }Entiendo esto:
zero one two¡Así que falta el valor foo en los bucles for y for of !
La pregunta es, ¿por qué foo es inaccesible dentro de estos bucles? ¿Por qué dice que no está definido , cuando puedo acceder a él usando arr.foo?