Protocolo iterable y for...of
Aprenda el protocolo iterable: Symbol.iterator, iterator.next() y el uso de for...of, spread y Array.from con pequeños ejemplos personalizados.
Protocolo iterable y for...of es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 3 lecciones en total.
Panorama general
Objetivo: Leer y crear iterables pequeños.
- Qué significa iterable
- Symbol.iterator y iterator.next()
- for...of, spread, Array.from
- Crear un contador de ejemplo de 0..N

for...of en elementos incorporados
for...of funciona con iterables incorporados, como arrays y cadenas, y produce los elementos en orden.
// Arrays and strings are iterable
const arr = [10, 20, 30];
for (const n of arr) {
console.log("arr item:", n);
}
const word = "JS";
for (const ch of word) {
console.log("char:", ch);
}

Iterable personalizado
Un iterable tiene [Symbol.iterator](), que devuelve un iterador cuyo next() produce { value, done }.
// A tiny iterable that counts 0..max-1
const Counter = {
make: function (max) {
return {
max: max,
// Symbol.iterator returns an iterator object
[Symbol.iterator]: function () {
let i = 0;
return {
next: function () {
if (i < max) {
const out = { value: i, done: false };
i = i + 1;
return out;
}
return { value: undefined, done: true };
}
};
}
};
}
};
for (const x of Counter.make(3)) {
console.log("count:", x);
}

Iteración manual
Internamente, for...of llama repetidamente a next() hasta que obtiene done: true.
// You can drive the iterator manually
const iterable = Counter.make(2);
const it = iterable[Symbol.iterator]();
console.log(it.next()); // { value: 0, done: false }
console.log(it.next()); // { value: 1, done: false }
console.log(it.next()); // { value: undefined, done: true }

Spread y Array.from
Spread y Array.from también utilizan el protocolo iterable para recopilar valores.
// Spread (...) and Array.from consume iterables
const small = Counter.make(4);
const a1 = [...small];
const a2 = Array.from(Counter.make(3));
console.log("spread:", a1);
console.log("from :", a2);

Buenos hábitos
Consejos:
- Devuelva un iterador nuevo cada vez en [Symbol.iterator].
- Termine siempre con done: true para evitar bucles infinitos.
- Mantenga el estado local dentro del cierre del iterador.

Cuestionario sobre el protocolo iterable
Comprobación rápida: Hacer que un objeto sea iterable.

Resumen
Resumen: Los elementos incorporados, como los arrays, son iterables. Para crear uno propio, añada [Symbol.iterator](), que devuelva un iterador con next(). Use for...of, spread o Array.from para consumir los valores.

Preguntas frecuentes
¿La lección «Protocolo iterable y for...of» es gratis?
Sí — el texto completo de «Protocolo iterable y for...of» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Protocolo iterable y for...of»?
Aprenda el protocolo iterable: Symbol.iterator, iterator.next() y el uso de for...of, spread y Array.from con pequeños ejemplos personalizados. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar JavaScript Academy?
No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.
¿Cuánto tiempo toma la lección «Protocolo iterable y for...of»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?
Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Protocolo iterable y for...of
- Funciones generadoras, yield y pequeños pipelines
- Iteradores asíncronos: for await...of y generadores async