Eu tenho uma função:
function myfunction() {
if (a == 'stop') // How can I stop the function here?
}
Existe algo como exit()
em JavaScript?
javascript
Simon
fonte
fonte
for
loop. Mesmo assim, não tenho idéia do motivo pelo qual o método sugerido seria usado, quando você poderia simplesmente chamarbreak;
. Para usar o exemplo do artigo: Oif(i==5) break;
usoreturn
interromperá a execução da função, esteja você emfor
loop ou não .return
interromperá a execução da função, que parece ser o que você pediu.Respostas:
Você pode apenas usar
return
.Isso enviará um valor de retorno
undefined
para o que for chamado de função.Obviamente, você pode especificar um valor de retorno diferente. Qualquer valor retornado será registrado no console usando o exemplo acima.
fonte
undefined
e é isso que minha solução principal fornece. O artigo que você mencionou está falando sobre como fazerreturn false
em um manipulador de eventos jQuery. Essa é uma questão totalmente diferente. Essa é a maneira correta de sair de uma função JavaScript. Obviamente, se o chamador confiar no valor retornado, o valor precisará ser definido adequadamente.if(a != 'stop') { /* run my code */ }
para que o código seja executado apenas quandoa
não for igual'stop'
sem fornecer um explícitoreturn
. Mas o valor de retorno é idêntico à minha solução . Nos dois casos,undefined
será devolvido.undefined
(ou não receber outro valor) como valor de retorno, será necessário estar em conformidade com a especificação dessa API e retornar o valor correto. Geralmente, para um sistema de manipulação de eventos, espera-seundefined
como uma simples indicação de que o manipulador terminou e não há mais instruções. Com o jQuery,return false;
tem um significado especial, fornecendo instruções para fazer umpreventDefault
estopPropagation
.Aparentemente, você pode fazer isso:
Veja os escopos de bloco através do uso de um rótulo: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
Ainda não vejo nenhuma desvantagem. Mas isso não parece um uso comum.
Derivada esta resposta: JavaScript equivalente ao dado do PHP
fonte
return false;
é muito melhor do que apenasreturn;
fonte
false
melhor? Eu diria que o padrãoundefined
é melhor no caso genérico. De qualquer forma, você está certo ao dizer que geralmente é melhor retornar um valor significativo.false
queundefined
.Este:
fonte
Usando uma abordagem um pouco diferente, você pode usar
try catch
, com a declaração throw.fonte
se você estiver procurando por um script para evitar o envio de formulários quando forem encontrados alguns erros, esse método funcionará
altere o tipo de botão Enviar para "botão"
Espero que isso ajude.
fonte
Usar a
return
interromperá a função e retornaráundefined
ou o valor que você especificar com o comando return.fonte
Não gosto de responder coisas que não são uma solução real ...
... mas quando encontrei esse mesmo problema, fiz a seguinte solução alternativa:
Espero que possa ser útil para qualquer pessoa.
fonte
Eu acho que lançar um novo erro é uma boa abordagem para interromper a execução, em vez de apenas retornar ou retornar falso. Por ex. Estou validando vários arquivos que permitem apenas cinco arquivos para upload em função separada.
Mas estou chamando essa função da função de fluxo principal como
No exemplo acima, não consigo parar a execução, a menos que eu lance um novo Error.Just return or return false, só funciona se você estiver na principal função de execução, caso contrário, não funcionará.
fonte
Saída(); pode ser usado para a próxima validação.
fonte
Se você estiver usando jquery. Isso deve impedir que a função borbulhe até que a função pai que chama isso também deve parar.
fonte
stopImmediatePropagation()
não é uma coisa do jQuery e parar a propagação não é a mesma coisa que sair de uma função.digite qualquer comando aleatório que gera um erro, por exemplo:
ou
fonte