¿Cómo puedo salir del script JavaScript como PHP exit
o die
? Sé que no es la mejor práctica de programación, pero necesito hacerlo.
return;
vez sea suficiente según sus requisitos, actúa como die () sin parámetros.
¿Cómo puedo salir del script JavaScript como PHP exit
o die
? Sé que no es la mejor práctica de programación, pero necesito hacerlo.
return;
vez sea suficiente según sus requisitos, actúa como die () sin parámetros.
Respuestas:
JavaScript equivalente para PHPdie
. Por cierto, solo llama exit()
(gracias 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 '';
}
Las funciones de "salida" suelen salir del programa o script junto con un mensaje de error como parámetro. Por ejemplo morir (...) en php
die("sorry my fault, didn't mean to but now I am in byte nirvana")
El equivalente en JS es señalar un error con la palabra clave throw así:
throw new Error();
Puedes probar esto fácilmente:
var m = 100;
throw '';
var x = 100;
x
>>>undefined
m
>>>100
Incluso en programas simples sin identificadores, eventos y demás, es mejor poner el código en una función "principal", incluso cuando es el único procedimiento:
<script>
function main()
{
//code
}
main();
</script>
De esta manera, cuando desee detener el programa, puede usar "return".
Si no te importa que sea un error, solo escribe:
fail;
Eso detendrá su código principal (global) de proceder. Útil para algunos aspectos de la depuración / prueba.
window.fail
no está definido en los navegadores actuales.
mikeyMouse;
, el error terminará. Es rápido y sucio.
Hay muchas formas de salir de un script JS o Node. Aquí están los más 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);
Si está en REPL (es decir, después de ejecutar node
en la línea de comando), puede escribir .exit
para salir.
En mi caso, utilicé la window.stop
API, que es como hacer clic en el botón X en su navegador:
window.stop();
Coloque la debugger;
palabra clave en su código JavaScript donde desea detener la ejecución. Luego abra las herramientas de desarrollador de su navegador favorito y vuelva a cargar la página. Ahora debería detenerse automáticamente. Abra la sección Orígenes de sus herramientas: la debugger;
palabra clave se resalta y tiene la opción de reanudar la ejecución del script.
Espero que ayude.
Mas información en:
Creo que esta pregunta ha sido respondida, haga clic aquí para obtener más información. A continuación se muestra la respuesta corta que se publica.
throw new Error("Stop script");
También puede usar su navegador para agregar puntos de interrupción, cada navegador es similar, consulte la información a continuación para su navegador.
Para obtener información sobre los puntos de ruptura de Chrome, haga clic aquí
Para obtener información sobre los puntos de ruptura de Firefox, haga clic aquí
Para obtener información sobre los puntos de ruptura de Explorer, haga clic
Para obtener información sobre los puntos de ruptura de Safari, haga clic aquí
Si está buscando una manera de terminar por la fuerza la ejecución de todos los Javascript en una página, no estoy seguro de que haya una forma oficial de hacerlo: parece ser el tipo de cosa que podría ser un riesgo de seguridad (aunque para sea honesto, no puedo pensar en cómo sería fuera de mi cabeza). Normalmente en Javascript cuando desea que su código deje de ejecutarse, simplemente return
desde cualquier función que se esté ejecutando. (La return
declaración es opcional si es lo último en la función y la función no debe devolver un valor). Si hay alguna razón por la que regresar no es lo suficientemente bueno para usted, probablemente debería editar más detalles en la pregunta de por qué piensa lo necesita y quizás alguien pueda ofrecerle una solución alternativa.
Tenga en cuenta que, en la práctica, la mayoría de los intérpretes Javascript de los navegadores simplemente dejarán de ejecutar el script actual si encuentran un error. Entonces puede hacer algo como acceder a un atributo de una variable no establecida:
function exit() {
p.blah();
}
y probablemente abortará el guión. Pero no debe contar con eso porque no es del todo estándar, y realmente parece una práctica terrible.
EDITAR : OK, tal vez esta no fue una buena respuesta a la luz de Ólafur. Aunque la die()
función a la que se vinculó básicamente implementa mi segundo párrafo, es decir, solo arroja un error.
Es un mal uso del concepto pero probablemente sea la única opción. Y sí, deberá restablecer todos los oyentes de eventos, tal como se menciona en la respuesta aceptada. También necesitaría un único punto de entrada si tengo razón.
Además: desea una página que le informe por correo electrónico tan pronto como se lance; puede usar, por ejemplo, Raven / Sentry para esto. Pero eso significa que te produces falsos positivos. En tal caso, también debe actualizar el controlador predeterminado para filtrar dichos eventos o establecer dichos eventos en ignorar en el panel de Sentry.
Esto no funciona durante la carga de la página. También detiene la decodificación de la página. Por lo tanto, realmente no puede usarlo para ofrecer al usuario una variante de su página sin JavaScript.
Detiene la ejecución solo con el depurador abierto. Funciona muy bien, pero no se puede entregar.
En JavaScript hay varias formas, a continuación se muestran algunas de ellas.
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:
escriba su función personalizada use el método anterior y llame donde lo necesite
Nota: Si solo quieres pausar la ejecución del código, puedes usar
debugger;
Esta pequeña función se acerca bastante a imitar la salida de PHP (). Al igual que con las otras soluciones, no agregue nada más.
function exit(Msg)
{
Msg=Msg?'*** '+Msg:'';
if (Msg) alert(Msg);
throw new Error();
} // exit
Si utiliza alguna función indefinida en el script, el script se detendrá debido a "Error de referencia no detectado". Lo intenté siguiendo el código y las dos primeras líneas ejecutadas.
Creo que esta es la mejor manera de detener el guión. Si hay otra forma, por favor comenteme. También quiero conocer otra manera mejor y simple. Por cierto, no obtuve la función incorporada salir o morir en Javascript como PHP para terminar el script. Si alguien lo sabe, hágamelo saber.
alert('Hello');
document.write('Hello User!!!');
die(); //Uncaught ReferenceError: die is not defined
alert('bye');
document.write('Bye User!!!');
Si solo desea evitar que se ejecute más código sin "arrojar" ningún error, puede anular temporalmente window.onerror
como se muestra en 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.");
Estoy usando iobroker y logré detener fácilmente el script con
stopScript();
Yo uso este código para detener la ejecución:
throw new FatalError("!! Stop JS !!");
Sin embargo, recibirá un error de consola, pero funciona bien para mí.
Este es un ejemplo de que, si existe una condición, termina el script. Lo uso en mi SSE javascript del lado del cliente, si el
<script src="sse-clint.js" host="https://sse.host" query='["q1,"q2"]' ></script>
no se puede analizar directamente desde el análisis JSON ...
if( ! SSE_HOST ) throw new Error(['[!] SSE.js: ERR_NOHOST - finished !']);
... de todos modos la idea general es:
if( error==true) throw new Error([ 'You have This error' , 'At this file', 'At this line' ]);
esto terminará / morirá su script javasript
Yo uso la declaración de retorno en lugar de throw como throw da error en la consola. la mejor manera de hacerlo es verificar la condición
if(condition){
return //whatever you want to return
}
esto simplemente detiene la ejecución del programa desde esa línea, en lugar de dar errores en la consola.
if (condition) { new new }
o if (condition) { purpleMonkeyDishwasher(); }
.