En primer lugar, nunca hay un costo longitud para el uso de un bucle for
sobre un bucle while
, pero se obtiene una funcionalidad adicional con el bucle for
, por lo algunos codificadores acaba de utilizar siempre el for
:
for(;<condition>;){}
while(<condition>){}
dicho esto, creo que el propósito aquí puede ser para mantener la coherencia con el código circundante.
Por ejemplo, aquí está parte del código original. Como se puede ver, en este código puede permanecer en el "para" el modo de bucle de pensar todo el tiempo, por lo que siente más consistente:
if (args) {
if (isObj) {
for (name in object) {
if (callback.apply(object[name], args) === false) {
break;
}
}
} else {
for (; i < length;) {
if (callback.apply(object[i++], args) === false) {
break;
}
}
}
}
comparar esto con la sustitución del segundo bucle con un while
.Cuando lee este código, debe pasar del modo de bucle "for" de pensamiento al modo de bucle "while". Ahora no sé ustedes, pero me resulta un poco más rápido para mis ojos para cambiar entre las condiciones de bucle anteriores en comparación con las condiciones de bucle a continuación. Esto se debe a que en el caso anterior puedo sólo se concentra en las condiciones, mientras que en el caso de abajo mis ojos se dirigen a releer el while
y la for
cada vez porque son diferentes:
if (args) {
if (isObj) {
for (name in object) {
if (callback.apply(object[name], args) === false) {
break;
}
}
} else {
while (i < length) {
if (callback.apply(object[i++], args) === false) {
break;
}
}
}
}
Me pregunto si este código es más corto cuando se minimiza? Es un código horrible, y los chicos de jQuery son personas inteligentes, así que creo que es para propósitos de minificación. –
Eliminando todos los espacios en blanco, la versión de @ aroth es más corta. Cualquier nombre de variable que pueda acortarse se usa la misma cantidad de veces. Podría ser aún más corto. 'while (i
user113716
Se podría argumentar que reemplazar todos los ciclos while con esta forma de for en el código minified se comprime mejor. Sin embargo, no tengo idea de si eso es lo que tenían en mente. –