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: ¿ return
detiene la ejecución del bucle en sí mismo?
javascript
loops
return
frenchie
fuente
fuente
return
todaví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,5
saltea3
debido a la devolución.return
siempre volverá delthis
contexto actual .break
y despuésreturn
.En la mayoría de los casos (incluido este),
return
saldrá inmediatamente. Sin embargo, si el retorno está en untry
bloque con unfinally
bloque que lo acompaña , elfinally
siempre se ejecuta y puede "anular" elreturn
en eltry
.fuente
La
return
declaració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 of
bucle:el siguiente código saltará sobre la condición y continuará en un
for of
bucle:fuente
Sí, una vez
return
que 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
return
declaració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