Supongamos que tengo un bucle como este:
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
Pregunta rápida: ¿ returndetiene la ejecución del bucle en sí mismo?
javascript
loops
return
frenchie
fuente
fuente

returntodavía regresa de la iteración actual de la devolución de llamada de la función, en su propio ámbito, pero no se espera que se rompa del método de llamada completoforEach(). Por lo tanto, no regresa del bucle en sí , sino que regresa de la devolución de llamada que ejecuta el bucle. En el ejemplo de código de la pregunta vinculada, la salida se1,2,4,5saltea3debido a la devolución.returnsiempre volverá delthiscontexto actual .breaky despuésreturn.En la mayoría de los casos (incluido este),
returnsaldrá inmediatamente. Sin embargo, si el retorno está en untrybloque con unfinallybloque que lo acompaña , elfinallysiempre se ejecuta y puede "anular" elreturnen eltry.fuente
La
returndeclaración detiene un ciclo solo si está dentro de la función. De lo contrario, obtendrá este error:fuente
Este código saldrá del bucle después de la primera iteración en un
for ofbucle:el siguiente código saltará sobre la condición y continuará en un
for ofbucle:fuente
Sí, una vez
returnque se ejecuta la instrucción, se abandona toda la función en ese mismo punto.¿Imagínese lo que sucedería si no fuera así y continuara dando vueltas y ejecutando esa
returndeclaración cada vez? Invalidaría su significado de devolver un valor cuando lo piense.fuente
La respuesta es sí, si escribe una declaración de devolución, los controles vuelven al método de llamada inmediatamente. Con la excepción de finalmente bloquear, que se ejecuta después de la declaración de devolución.
y finalmente también puede anular el valor que ha devuelto, si regresa dentro del bloque finalmente. ENLACE: aclaración Try-catch-finally-return
Definición de declaración de devolución según:
Documentos de Java:
Documentación de MSDN:
Wikipedia:
fuente
"return" sale de la función pero si desea devolver grandes sumas de datos, puede almacenarlos en una matriz y luego devolverlos en lugar de intentar devolver cada dato 1 por 1 en el bucle.
fuente