Suponha que eu tenha um loop como este:
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
Pergunta rápida: return
para a execução do loop por si só?
javascript
loops
return
frenchie
fonte
fonte
return
ainda retorna da iteração atual do retorno de chamada da função, em seu próprio escopo, mas não seria esperado interromper todo o método de chamadaforEach()
. Portanto, ele não está retornando do próprio loop , mas está retornando do retorno de chamada que o loop executa. No exemplo de código da pergunta vinculada, a saída está1,2,4,5
ignorando o resultado3
do retorno.return
sempre retorne dothis
contexto atual .break
e entãoreturn
.Na maioria dos casos (incluindo este),
return
sairá imediatamente. No entanto, se o retorno estiver em umtry
bloco com umfinally
bloco acompanhante , ofinally
sempre executará e poderá "substituir" oreturn
notry
.fonte
A
return
instrução interrompe um loop apenas se estiver dentro da função. Caso contrário, você receberá este erro:fonte
Este código sairá do loop após a primeira iteração em um
for of
loop:o código abaixo pulará na condição e continuará em um
for of
loop:fonte
Sim, uma vez que o
return
instrução é executada, a função inteira é encerrada nesse exato momento.Imagine o que aconteceria se isso não acontecesse e continuasse repetindo e executando essa
return
instrução a cada vez? Isso invalidaria o significado de retornar um valor quando você pensar sobre isso.fonte
A resposta é sim, se você escrever a declaração de retorno, os controles voltarão imediatamente ao método de chamada. Com exceção do bloco finalmente, que é executado após a declaração de retorno.
e, finalmente, também pode substituir o valor que você retornou, se você retornar dentro do bloco finalmente. LINK: Esclarecimento de tentar pegar e finalmente retornar
Definição da declaração de retorno de acordo com:
Documentos do Java:
Documentação do MSDN:
Wikipedia:
fonte
"return" sai da função, mas se você deseja retornar grandes somas de dados, pode armazená-las em uma matriz e depois devolvê-las, em vez de tentar retornar cada pedaço de dados 1 por 1 no loop.
fonte