Como posso sair do script JavaScript como o PHP exit
ou die
? Sei que não é a melhor prática de programação, mas preciso.
return;
pode ser suficiente, dependendo de seus requisitos, age como die () sem parâmetros.
Como posso sair do script JavaScript como o PHP exit
ou die
? Sei que não é a melhor prática de programação, mas preciso.
return;
pode ser suficiente, dependendo de seus requisitos, age como die () sem parâmetros.
Respostas:
JavaScript equivalente para PHPdie
. Entre, basta chamar exit()
(obrigado splattne):
function exit( status ) {
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brettz9.blogspot.com)
// + input by: Paul
// + bugfixed by: Hyam Singer (http://www.impact-computing.com/)
// + improved by: Philip Peterson
// + bugfixed by: Brett Zamir (http://brettz9.blogspot.com)
// % note 1: Should be considered expirimental. Please comment on this function.
// * example 1: exit();
// * returns 1: null
var i;
if (typeof status === 'string') {
alert(status);
}
window.addEventListener('error', function (e) {e.preventDefault();e.stopPropagation();}, false);
var handlers = [
'copy', 'cut', 'paste',
'beforeunload', 'blur', 'change', 'click', 'contextmenu', 'dblclick', 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', 'scroll',
'DOMNodeInserted', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument', 'DOMNodeInsertedIntoDocument', 'DOMAttrModified', 'DOMCharacterDataModified', 'DOMElementNameChanged', 'DOMAttributeNameChanged', 'DOMActivate', 'DOMFocusIn', 'DOMFocusOut', 'online', 'offline', 'textInput',
'abort', 'close', 'dragdrop', 'load', 'paint', 'reset', 'select', 'submit', 'unload'
];
function stopPropagation (e) {
e.stopPropagation();
// e.preventDefault(); // Stop for the form controls, etc., too?
}
for (i=0; i < handlers.length; i++) {
window.addEventListener(handlers[i], function (e) {stopPropagation(e);}, true);
}
if (window.stop) {
window.stop();
}
throw '';
}
As funções "exit" geralmente fecham o programa ou script junto com uma mensagem de erro como parâmetro. Por exemplo, morrer (...) em php
die("sorry my fault, didn't mean to but now I am in byte nirvana")
O equivalente em JS é sinalizar um erro com a palavra-chave throw assim:
throw new Error();
Você pode facilmente testar isso:
var m = 100;
throw '';
var x = 100;
x
>>>undefined
m
>>>100
Mesmo em programas simples, sem identificadores, eventos e outros, é melhor colocar o código em uma função "principal", mesmo quando esse for o único procedimento:
<script>
function main()
{
//code
}
main();
</script>
Dessa forma, quando você deseja interromper o programa, pode usar "return".
Se você não se importa que seja um erro, basta escrever:
fail;
Isso impedirá que seu código principal (global) continue. Útil para alguns aspectos da depuração / teste.
window.fail
não está definido nos navegadores atuais.
mikeyMouse;
- o erro será encerrado. É rápido e sujo.
Existem várias maneiras de sair de um script JS ou Node. Aqui estão os mais relevantes:
// This will never exit!
setInterval((function() {
return;
}), 5000);
// This will exit after 5 seconds, with signal 1
setTimeout((function() {
return process.exit(1);
}), 5000);
// This will also exit after 5 seconds, and print its (killed) PID
setTimeout((function() {
return process.kill(process.pid);
}), 5000);
// This will also exit after 5 seconds and create a core dump.
setTimeout((function() {
return process.abort();
}), 5000);
Se você estiver no REPL (ou seja, depois de executar node
na linha de comando), digite .exit
para sair.
No meu caso, usei a window.stop
API, que é como clicar no botão X no seu navegador:
window.stop();
Coloque a debugger;
palavra - chave no seu código JavaScript onde deseja parar a execução. Em seguida, abra as ferramentas de desenvolvedor do seu navegador favorito e recarregue a página. Agora deve pausar automaticamente. Abra a seção Fontes de suas ferramentas: a debugger;
palavra-chave é destacada e você tem a opção de retomar a execução do script.
Espero que ajude.
Mais informações em:
Acho que esta pergunta foi respondida, clique aqui para obter mais informações. Abaixo está a resposta curta que é postada.
throw new Error("Stop script");
Você também pode usar seu navegador para adicionar pontos de interrupção; todos os navegadores são semelhantes; verifique as informações abaixo para o seu navegador.
Para obter informações sobre pontos de interrupção do Chrome, clique aqui
Para informações sobre pontos de interrupção do Firefox, clique aqui
Para informações sobre pontos de interrupção do Explorer, clique em
Para informações sobre pontos de interrupção do Safari, clique aqui
Se você está procurando uma maneira de terminar forçosamente a execução de todo o Javascript em uma página, não tenho certeza de que haja uma maneira oficialmente sancionada de fazer isso - parece o tipo de coisa que pode ser um risco à segurança (embora para ser honesto, não consigo pensar em como isso seria do alto da minha cabeça). Normalmente em Javascript, quando você deseja que seu código pare de ser executado, é necessário a return
partir de qualquer função que esteja sendo executada. (A return
declaração é opcional se for a última coisa na função e a função não devolver um valor) Se houver algum motivo pelo qual o retorno não seja bom o suficiente para você, você provavelmente deverá editar mais detalhes na pergunta sobre por que pensa você precisa e talvez alguém possa oferecer uma solução alternativa.
Observe que, na prática, os intérpretes Javascript da maioria dos navegadores simplesmente param de executar o script atual se encontrarem um erro. Portanto, você pode fazer algo como acessar um atributo de uma variável não definida:
function exit() {
p.blah();
}
e provavelmente abortará o script. Mas você não deve contar com isso porque não é de todo padrão e parece realmente uma prática terrível.
EDIT : OK, talvez essa não tenha sido uma resposta tão boa à luz da de Ólafur. Embora a die()
função à qual ele se vinculou basicamente implemente meu segundo parágrafo, isto é, apenas gera um erro.
É um mau uso do conceito, mas provavelmente a única opção. E, sim, você precisará redefinir todos os ouvintes de eventos, assim como a resposta aceita. Você também precisaria de um único ponto de entrada se eu estiver certo.
No topo: Você deseja uma página que reporte por e-mail assim que for lançada - você pode usar, por exemplo, Raven / Sentry para isso. Mas isso significa que você se produz falsos positivos. Nesse caso, você também precisa atualizar o manipulador padrão para filtrar esses eventos ou definir esses eventos em ignorar no painel do Sentry.
Isso não funciona durante o carregamento da página. Para a decodificação da página também. Portanto, você não pode realmente usá-lo para oferecer ao usuário uma variante sem javascript da sua página.
Pára a execução apenas com o depurador aberto. Funciona muito bem, mas não é um produto final.
No JavaScript, existem várias maneiras, abaixo estão algumas delas
Método 1:
throw new Error("Something went badly wrong!");
Método 2:
return;
Método 3:
return false;
Método 4:
new new
Método 5:
escreva sua função personalizada, use o método acima e chame onde precisar
Nota: Se você quiser apenas pausar a execução do código, poderá usar
debugger;
Esta pequena função chega bem perto de imitar exit () do PHP. Como nas outras soluções, não adicione mais nada.
function exit(Msg)
{
Msg=Msg?'*** '+Msg:'';
if (Msg) alert(Msg);
throw new Error();
} // exit
Se você usar alguma função indefinida no script, o script será interrompido devido a "Uncaught ReferenceError". Eu tentei seguindo o código e as duas primeiras linhas executadas.
Eu acho que essa é a melhor maneira de parar o script. Se houver outra maneira, por favor, comente-me. Eu também quero conhecer outra maneira melhor e mais simples. BTW, eu não obtive a saída ou a função embutida em Javascript como PHP para finalizar o script. Se alguém souber, por favor me avise.
alert('Hello');
document.write('Hello User!!!');
die(); //Uncaught ReferenceError: die is not defined
alert('bye');
document.write('Bye User!!!');
Se você deseja apenas impedir que outro código seja executado sem "gerar" nenhum erro, você pode substituir temporariamente, window.onerror
conforme mostrado em cross-exit
:
function exit(code) {
const prevOnError = window.onerror
window.onerror = () => {
window.onerror = prevOnError
return true
}
throw new Error(`Script termination with code ${code || 0}.`)
}
console.log("This message is logged.");
exit();
console.log("This message isn't logged.");
Estou usando o iobroker e consegui facilmente parar o script com
stopScript();
Eu uso esse pedaço de código para interromper a execução:
throw new FatalError("!! Stop JS !!");
você receberá um erro no console, mas ele funciona bem para mim.
Este é um exemplo de que, se existir uma condição, encerre o script. Eu uso isso no meu javascript do lado do cliente SSE, se o
<script src="sse-clint.js" host="https://sse.host" query='["q1,"q2"]' ></script>
não pode ser analisado diretamente da análise JSON ...
if( ! SSE_HOST ) throw new Error(['[!] SSE.js: ERR_NOHOST - finished !']);
... de qualquer maneira, a idéia geral é:
if( error==true) throw new Error([ 'You have This error' , 'At this file', 'At this line' ]);
isso irá finalizar / morrer seu script javasript
Eu uso a declaração de retorno em vez de throw como throw dá erro no console. a melhor maneira de fazer isso é verificar a condição
if(condition){
return //whatever you want to return
}
isso simplesmente interrompe a execução do programa a partir dessa linha, em vez de fornecer erros no console.
if (condition) { new new }
ou if (condition) { purpleMonkeyDishwasher(); }
.