Raúl Adolfo Sánchez Rodríguez
Miguel David Isaac Leiva Cid
muy buenos ejemplos
Cuando trabajas con listas en JavaScript, necesitas una forma sencilla de recorrer cada elemento sin escribir condiciones complicadas. El bucle for of resuelve justo eso: itera objetos iterables como arrays y strings con una sintaxis tan clara que casi se lee en voz alta. Es ideal si estás aprendiendo loops y quieres código legible desde el primer día.
¿Qué es el bucle for of y para qué sirve?
El nombre lo dice todo: for cada elemento of esta lista, ejecuta este bloque de código. Es una herramienta pensada para recorrer estructuras que ya tienen una secuencia interna, sin que tú tengas que llevar la cuenta del índice manualmente.
¿Qué es un objeto iterable? Es cualquier estructura que contiene una lista de elementos recorribles uno por uno. En JavaScript, los más comunes son los arrays y los strings.
La idea central es que for of solo funciona sobre objetos iterables. Si intentas usarlo sobre algo que no lo sea, no vas a obtener el resultado esperado. Por eso conviene tener clara esta regla antes de escribir tu primer loop.
¿Cómo se escribe la estructura de un for of?
La sintaxis base sigue un patrón corto y predecible que vas a memorizar rápido. Empiezas con la palabra reservada for, abres paréntesis, declaras tu variable, usas la palabra of y apuntas al objeto iterable. Después, entre llaves, va el código a ejecutar.
javascript for (variable of objetoIterable) { // código a ejecutar }
En cada vuelta, la variable toma el valor del siguiente elemento de la lista. Cuando ya no quedan elementos, el loop se rompe automáticamente y deja de ejecutar el bloque. No necesitas escribir un break manual ni controlar contadores.
¿Cómo nombrar la variable del loop?
Una buena práctica es darle a la variable un nombre que describa el elemento individual. Si tu lista se llama canasta y contiene frutas, la variable lógica es fruta. Esto hace que el código se lea casi como una frase en español.
canasta, usuarios, productos.fruta, usuario, producto.¿Cómo iterar un array con for of paso a paso?
Vamos con un ejemplo concreto. Imagina que tienes una canasta con cuatro frutas y quieres imprimir cada una en la consola del navegador. Con for of, el código queda así de directo.
javascript let canasta = ["manzana", "pera", "naranja", "uva"];
for (let fruta of canasta) { console.log(fruta); }
Lo que sucede aquí es simple: por cada fruta de la canasta, ejecuta console.log y muestra esa fruta. La consola va a imprimir manzana, pera, naranja y uva, en ese orden. Cuando la lista se acaba, el loop termina solo.
¿Cuándo debo usar for of en lugar de otro loop? Úsalo cuando solo necesitas el valor de cada elemento de un array o string, sin importar la posición. Si necesitas el índice, considera otras opciones como
forclásico oforEach.
Fíjate en algo importante: la canasta es una lista, y si le aplicas canasta.length, JavaScript te devuelve su longitud. Esa propiedad confirma que estás trabajando con un objeto iterable, justo el escenario donde for of brilla.
¿Qué objetos iterables puedes recorrer con for of?
Los dos casos más frecuentes que vas a encontrar al inicio son los arrays y los strings. Ambos comparten la característica de ser secuencias ordenadas de elementos.
La regla mental que conviene fijar es esta: cada vez que tengas una lista de objetos iterables, puedes usar un for of. Si la estructura no genera una lista, este método no es el indicado y deberás buscar otra forma de iterar.
¿Ya probaste tu primer for of con una lista propia? Cuéntame en los comentarios qué array estás recorriendo y cómo lo nombraste.
El ciclo for... of permite operar sobre un objeto iterable, es posible que en algún momento te encuentres con un error del estilo TypeError: 'x' is not iterable, que nos indica que la estructura que estamos tratando de utilizar en nuestro ciclo no es iterable, es por esto que debemos tener claro lo que hace que un objeto sea iterable.
En esencia, un objeto iterable es aquel que tiene un protocol de iteración definido, los más comunes que encontramos son los Arrays y las Strings. (En lenguaje técnico si el objeto tiene un Symbol.iterator, entonces este es iterable)
OJO 👀 lo que llamamos comunmente en JS como objetos, esas variables que tienen una estructura {}, NO son iterables, para explorar estos objetos, podemos usar el método for... in el cual vemos en la siguiente clase!
💡 Aquí encuentras la documentación sobre el ciclo for... of
Raúl Adolfo Sánchez Rodríguez
Miguel David Isaac Leiva Cid
muy buenos ejemplos
Juan Cruz Fuentes
no queda claro como se usa, falta explicación
Wilbort Encomenderos Ruiz
Los maps y sets también son objetos iterables, por lo que se podrían usar también el for of en esos tipos de datos.
Juliana Rios
Platzi Team
Loop For of
El bucle for...of en JavaScript es una estructura de control introducida en ECMAScript 6 (ES6) que simplifica la iteración sobre elementos iterables como arrays, strings, sets, maps, entre otros.
A diferencia del bucle for tradicional que se basa en índices numéricos, for...of recorre cada elemento del iterable directamente, proporcionando una sintaxis más simple y legible.
Sintaxis del Bucle for...of
La sintaxis básica de for...of es la siguiente:
for (variable of iterable) {
// Código a ejecutar para cada elemento
}
Ejemplo Básico con Array
let colores = ["rojo", "verde", "azul"];
for (let color of colores) {
console.log(color);
}
Este ejemplo imprimirá cada color del array colores en cada iteración.
Limitaciones
for tradicional, for...of no proporciona acceso directo a los índices del iterable. Si necesitas los índices, puedes usar el método entries() en conjunción con for...of.Miguel Angel Rodriguez Cano
const colores = ["rojo", "azul", "verde", "amarillo"];
for (color of colores) {
console.log(Mi color favorito es: ${color})
}
Daisy Ramirez
No es estrictamente necesario usar let en la variable del for-of, pero es una buena práctica. Al usar let, cada iteración del bucle tiene su propia copia de la variable, evitando problemas de alcance. Si usas var, todas las iteraciones comparten la misma variable, lo que puede llevar a comportamientos inesperados. Así que, aunque puedes omitir let, es recomendable usarlo para mayor claridad y control en el código.
Juan Miguel Jimenez
Buen dato, había supuesto que let se tomaba por default al omitirlo y no var.
Brayan Cifuentes
ES COMO UN FOR EACH EN JAVA NO?
Dymon Zamora
(ignorantemente) creo que también hay un for each en javascript...
Miguel Jonathan Madrigal González
Wow, no conocia que se podia iterar en strings. Aquí les va un ejemplo:
.
let abecedario = 'abcdefghijklmnñopqrstuvwxyz'; for (letra of abecedario) { console.log(letra); };
Ana Belen Chamba Mera
//Declaración de la lista 'canasta' -> array que contiene 5 elementos let canasta = ["manzana","pera","naranja","uva", "kiwi"]; //Inicialización del contador: se inicializa en 1, se enumera las frutas let i = 1; //Este bucle 'for...of' recorre cada elemento del array en cada iteración for(fruta of canasta){ console.log(`${i}. ${fruta}`); i++; //Después de imprimir cada fruta 'i' se incrementa en 1 en la siguiente iteración } ``````js 1. manzana 2. pera 3. naranja 4. uva 5. kiwi
Miguel Herrera
Aquí el i esta completamente de más.
Porque cuando decimos fruta of canasta ya le estamos diciendo que recorra todos los elementos de la lista, y el bucle no parará hasta terminar de recorrer todos.
Miguel Jonathan Madrigal González
Existe una alternativa a for of, y es forEach().
.
Su estructura es la siguiente, aplicaré el mismo ejemplo de la clase pero adaptado a forEach()...
.
let canasta = ['manzana', 'pera', 'naranja', 'uva']; canasta.forEach((fruta) => { console.log(fruta); });
Miguel Jonathan Madrigal González
Leyendo el siguiente post de forEach vs For Of:
.
He aprendido que forEach() no puede iterar en strings, solo en arrays.
Calvin Rafael Bobadilla Fernandez
APUNTES:
Antonio José Alvarez Delgado
aunque tengan similitudes, el for es mas usado para ciclos controlados por un indice, mientras que el for-of es mas usado para recorrer listas o arreglos.
YESSENIA YAZMIN ORUE ALCARRAZ
¿En qué momento se definió a los elementos como "frutas"? Es decir, se asume por default: javascrip sabe que son frutas o, en qué parte del código se determina??
Matias Ezequiel Rivero
Hola, si te refieres a fruta dentro del for of -> fruta hace referencia a una variable temporal que se genera, puede ser cualquier nombre (element - item - product) etc. En la clase se le pone fruta porque el array de la canasta contiene elementos relacionados con frutas. Espero que te sirva.
Yessica Santiago Valdés
Tenía la misma duda, y encontré que JavaScript crea una variable llamada global no declarada. Esto genera una advertencia estricta de JavaScript.
Asimismo, esto representa una mala práctica, por lo que, lo conveniente sería escribir el código de la siguiente forma:
let canasta = ['manzana', 'pera', 'naranja', 'uva']; for (let fruta of canasta) { console.log(fruta); }
En donde se declara let fruta.
Te dejo mis referencias directas de la documentación:
Julio Cardenas
Aqui mi prueba con un objeto:
Jafeth Jesús Sánchez Sánchez
La sentencia sentencia for...of ejecuta un bloque de código para cada elemento de un objeto iterable, como lo son: String, Array, objetos similares a array.
Ejemplo:
//for of let menu = ['pambazo','quesadilla','pizza','tacos'] for (comida of menu){ console.log(comida); }
Daniel Vergel
Emilio Flor
Resumen de For-of:
Sirve para iterar sobre objetos iterables como los arrays y los strings, con for of obtenemos el valor de ese objeto.
let canasta = ['manzana', 'pera', 'naranja', 'uva']; for (let fruta of canasta) { console.log(fruta); }
Como vimos en esta clase, for of nos permite obtener la fruta(valor) del objeto iterable (array) "canasta".
etonces For-of:
objetivo > iterar sobre los valores de un objeto
devuelve > el valor del elemento en la posición actual
uso > arrays,strings, set, map y otras estructuras que implementen el protocolo de iteración de js.
David Rangel
Para Octubre del 2025, al menos con Typescript se debe de declarar la variable que mapea de forma individual cada elemento del objeto como una "const":
let canasta = ['manzana', 'pera', 'naranja', 'uva']; for (const fruta of canasta) { console.log(fruta); }