Existe algo como "morrer" em JavaScript? Já tentei com "break", mas não deu certo :)
javascript
cupakob
fonte
fonte
function die(str) {throw new Error(str || "Script ended by death");}
Ou algo XD. Muitas opções melhores por aí, mas funcionaria. Pode ser bom para depuração, se você quiser apenas executar a primeira parte de um script para ter certeza de que funciona.die
,goto
,eval
, etc, são infinitamente regurgitado (e não sem mérito), mas todos eles têm seus usos especiais, especialmente para depuração de baixo nível. Caso contrário, os idiomas não os incluiriam. Nesse caso, os equivalentes JS dereturn
ethrow
são bastante inócuos.Respostas:
Você só pode
break
bloquear um escopo se rotulá-lo. Por exemplo:Você não pode quebrar um escopo de bloco de dentro de uma função no escopo. Isso significa que você não pode fazer coisas como:
Você pode fazer algo semelhante com funções:
fonte
foo: {}
é um objeto?foo: if(true){...}
fonte
Você pode simplesmente usar o
return;
exemploO retorno retornará para a função principal do chamador test1 (); e continue daí para test3 ();
mas se você apenas adicionar throw ''; isso interromperá completamente a execução sem causar erros.
Isso é testado com firefox e cromo. Não sei como isso é tratado pelo IE ou Safari
fonte
return
sai apenas da função de fechamento. Não funciona quando você deseja interromper a execução de todo o script.throw ""
: ... sem causar erros ... - Não exatamente ...Uncaught ""
Basta ligar
die()
sem nunca defini-lo. Seu script irá travar. :)Quando faço isso, geralmente ligo
discombobulate()
, mas o princípio é o mesmo.(Na verdade, o que isso faz é lançar um
ReferenceError
, tornando-o praticamente o mesmo que a resposta do Spudly - mas é mais curto de digitar, para fins de depuração.)fonte
die
é intuitivo e conciso. Ele não tem o benefício dethrow
quando se trata de registrar uma mensagem de erro específica, mas às vezes apenas o número da linha é suficiente. BTW,die;
sem os parênteses (des-) funciona também.É possível lançar sua própria versão do dado do PHP:
Exemplo JSFiddle
fonte
var a = arguments[3] || die('message')
. em vez disso, acho que o dado deveria ser:function die(msg) { return eval(`throw "${msg}"`);)
mas, mesmo assim, acho que isso deveria ser colocado firmemente na linha que se quebra para que o erro mostre qual linha falhou, por exemplothis.inputFile = argv[2] || eval('throw "this program requires an input file."');
Se você estiver usando nodejs, você pode usar
fonte
use firebug e o glorioso ...
e nunca deixe o depurador dar qualquer passo à frente. Mais limpo do que jogar um bom
Error
, não é?fonte
Não existe um equivalente exato de construção
die
de linguagem de PHP em Javascript .die
em PHP é quase igual aSystem.exit()
em Java , que termina o script atual e chama ganchos de desligamento. Como alguns usuários sugeriram;throw Error
pode ser usado em alguns casos, mas nunca garante o encerramento do script atual. Sempre pode haver um bloco de tratamento de exceção em torno de suathrow
instrução - a menos que você o chame no bloco de script de nível superior, que eventualmente sai apenas do bloco de script que você está executando.No entanto, isso não impedirá que o segundo bloco seja executado aqui (imprime olá):
fonte
você pode tentar com:
que funcionam em caso de parada do processo.
fonte
Não há saída de função equivalente a php die () em JS, se você não estiver usando nenhuma função, pode simplesmente usar return;
fonte
Você pode usar return false; Isso encerrará seu script.
fonte
Isso deve funcionar como die ();
fonte
Função die () global para fins de desenvolvimento:
Use o dado ():
fonte
fonte