Montaña rusa

For in Javascript

En muchas ocasiones hemos oído que usar bucle de tipo for in en JavaScript puede ser problemático a veces. Vamos a intentar explicar cómo funciona esta estructura condicional.

El bucle for in está pensado para iterar sobre las propiedades de un objeto y no debería ser utilizado a la ligera para iterar sobre un array.

El primer problema que tenemos es el orden en el que itera, aunque la mayoría de navegadores iteran en el orden en el que se define las propiedades, otros no lo hacen así. Por tanto si pensamos iterar sobre un objeto de tipo array, al iterar sobre sus propiedades (los índices del array), estos no tienen porque ser recorridos en orden.

Además existe un problema añadido, no sólo se itera sobre las propiedades del objeto, si no también por las de su prototipo.

Veamos un ejemplo en el que modificamos el prototipo de objeto Array:


Si ejecutamos el código, veremos que la salida obtenida es: monkey, elephant, tiger y test.

Para evitar este problema podemos utilizar un función que compruebe que los elementos sean del propio objeto y no del prototype.

En esta ejecución no obtendríamos el resultado test.

Por tanto para evitar problemas a la hora de recorrer un array es mejor utilizar el bucle for o while.

Esperamos que os haya ayudado a aclarar dudas.