Además, ¿es esta una pregunta de estilo o una pregunta funcional? ¿Es una cuestión de preferencia o es mejor? Estoy tratando de entender el propósito de for-of.
Usualmente uso,
let iterable = [10, 20, 30]; iterable.forEach((val) => { console.log(val); })Pero veo que esta nueva sintaxis está disponible.
let iterable = [10, 20, 30]; for (let value of iterable) { console.log(value); }¿Se puede proporcionar un ejemplo de un mejor caso de uso para for-of que pueda iluminar cuándo se debe usar?
Recomiendo usar siempre for … of en ES6.
continue , break , return , yield y await . También personalmente lo encuentro más legible, pero eso se reduce a la preferencia. Algunas personas piensan que forEach es un estilo más funcional, pero eso es incorrecto: no tiene valor de resultado y se trata de hacer efectos secundarios, por lo que un bucle de aspecto imperativo se ajusta mejor a ese propósito.
El rendimiento no es una preocupación, en los motores modernos todos los estilos de bucle son equivalentes .
Esta es una pregunta muy interesante que se ha discutido en muchos otros sitios. Voy a publicar los conceptos básicos de lo que he leído.
ForEach pertenece exclusivamente a la familia real de Arrays. ¡El método forEach se introdujo con el linaje de la herencia prototípica del objeto Array! No hace falta decir que la cláusula forEach solo funciona con aquellas estructuras de datos que son matrices. El método básicamente itera sobre los elementos de la matriz y ejecuta una función de devolución de llamada [básicamente alguna función ejecutable/actividad divertida].
¡ El bucle for-of es adecuadamente nuevo en el mundo de JS y contiene superpoderes! ¡Voilaaaaaaa! El bucle for-of crea un bucle iterando sobre objetos miembro iterables. La lista es extensa como
Debe saber que este chico malo surgió con el nacimiento de ES6 en 2015. Por lo tanto, ofrece mucha flexibilidad en el uso.
Actuación
En rendimiento, for...of es más rápido que forEach . Los resultados se pueden encontrar aquí
forEach es un 24% más lento que for...of
Hay varias otras clases iterables en la especificación W3C, como FileList, como mencioné anteriormente. Y en borradores recientes de W3C (alrededor de cuando se lanzó ES6), colecciones como HTMLCollection y NodeList ahora también implementan forEach(), no solo Array. Por @Patrick Roberts
Enlaces de origen: