En el libro Javascript: las partes buenas por Douglas Crockford, esto es todo lo que el autor tiene que decir acerca de la Declaración de continuar:¿Por qué las afirmaciones "continuar" son incorrectas en JavaScript?
La declaración
continue
salta a la parte superior del bucle. Nunca he visto un código que no se haya mejorado al refaccionarlo para eliminar la declaracióncontinue
.
Esto realmente me confunde. Sé que Crockford tiene algunas opiniones muy dogmáticas sobre JavaScript, pero esto me suena del todo mal.
En primer lugar, continue
hace más que simplemente saltar al principio de un ciclo. Por defecto, también avanza a la siguiente iteración. Entonces, ¿no es la afirmación de Crockford una información completamente falsa?
Más importante aún, no entiendo completamente por qué continue
incluso se consideraría malo. Este post ofrece lo que parece ser la suposición general: Why is continue inside a loop a bad idea?
Aunque entiendo cómo continue
puede hacer que el código difícil de leer en ciertos casos, creo que es tan probable que se pueda hacer el código más legible. Por ejemplo:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]==='number'){
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
}
Esto se puede refactorizado en:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]!=='number'){
continue;
}
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
continue
no es particularmente beneficioso en este ejemplo específico, pero demuestra el hecho de que se reduce la profundidad de anidamiento. En un código más complejo, esto podría aumentar la legibilidad.
Crockford no proporciona ninguna explicación de por qué continue
no se debe utilizar, por lo que hay una cierta importancia más profunda detrás de esta opinión que me falta?
La palabra clave 'continue' es una herramienta; úsala cuando corresponda. A veces es necesario, la mayoría de las veces no lo es. La única vez que es malo es cuando no necesitas usarlo, pero eres demasiado flojo o descuidado para hacerlo de otra manera. – slugster
Tuve la misma sensación y es por eso que hice mi [publicación] (http://stackoverflow.com/questions/30030033/continue-statement-confusion). Lo que me ayudó es solo pensar en la palabra 'hop' al usar las declaraciones de continuación. Creo que el Sr. Crawford usó una mala palabra de elección aquí al diseñar el lenguaje: P Especialmente porque hop puede aplicar la lógica 'continuar' detrás de él. Si saltas sobre algo, normalmente continuarás también. Piensa en los corredores de maratón como una buena analogía. –
"Mr. Crawford" no diseñó el idioma. – rlemon