¿Hay algo como "morir" en JavaScript? Lo intenté con "romper", pero no funciona :)
javascript
cupakob
fuente
fuente
function die(str) {throw new Error(str || "Script ended by death");}
O algo XD Hay muchas opciones mejores, pero esto funcionaría. Podría ser bueno para la depuración, si solo desea ejecutar la primera parte de un script para asegurarse de que funcione.die
,goto
,eval
, etc son regurgitados sin fin (y no sin mérito), pero todos ellos tienen sus usos especiales, especialmente para la depuración de bajo nivel. De lo contrario, los idiomas no los incluirían. En este caso, los equivalentes JS dereturn
ythrow
son lo suficientemente inocuos.Respuestas:
Solo puede
break
bloquear un alcance si lo etiqueta. Por ejemplo:No puede romper un alcance de bloque desde dentro de una función en el alcance. Esto significa que no puede hacer cosas como:
Sin embargo, puedes hacer algo similar con las funciones:
fuente
foo: {}
es un objeto?foo: if(true){...}
fuente
Simplemente puede usar el
return;
ejemploEl retorno volverá a la función principal de llamada test1 (); y continúe desde allí hasta test3 ();
pero si solo agrega lanzar ''; esto detendrá completamente la ejecución sin causar ningún error.
Esto se prueba con Firefox y Chrome. No sé cómo IE o Safari manejan esto
fuente
return
solo sale de la función de cierre. No funciona cuando desea dejar de ejecutar todo el script.throw ""
: ... sin causar ningún error ... - No del todo ...Uncaught ""
Simplemente llame
die()
sin definirlo nunca. Tu guión fallará. :)Cuando hago esto, normalmente llamo en su
discombobulate()
lugar, pero el principio es el mismo.(En realidad, lo que hace es lanzar un
ReferenceError
, por lo que es aproximadamente lo mismo que la respuesta de Spudly, pero es más corto de escribir, para fines de depuración).fuente
die
es intuitivo y conciso. Carece del beneficio dethrow
cuando se trata de registrar un mensaje de error específico, pero a veces solo el número de línea es suficiente. Por cierto,die;
sin los paréntesis (un-) también funciona.Es posible lanzar su propia versión del dado de PHP:
Ejemplo de JSFiddle
fuente
var a = arguments[3] || die('message')
. en su lugar, creo que morir debería ser:function die(msg) { return eval(`throw "${msg}"`);)
pero incluso entonces, creo que esto debería colocarse en la línea que se rompe para que el error muestre qué línea falló, por ejemplothis.inputFile = argv[2] || eval('throw "this program requires an input file."');
Si está usando nodejs, puede usar
fuente
usa firebug y el glorioso ...
y nunca deje que el depurador dé un paso adelante. Más limpio que lanzar un buen
Error
, ¿no?fuente
No hay un equivalente exacto de la construcción
die
del lenguaje de PHP en Javascript .die
en PHP es prácticamente igual queSystem.exit()
en Java , que finaliza el script actual y llama a los hooks de cierre. Como sugirieron algunos usuarios;throw Error
se puede utilizar en algunos casos, sin embargo, nunca garantiza la terminación del script actual. Siempre puede haber un bloque de manejo de excepciones alrededor de suthrow
declaración, a menos que lo llame en el bloque de script de nivel superior, que eventualmente sale solo del bloque de script que está ejecutando.Sin embargo, no evitará que el segundo bloque se ejecute aquí (imprime hola):
fuente
puedes probar con:
que funcionan en caso de detener el proceso.
fuente
No hay una función de salida equivalente a php die () en JS, si no está usando ninguna función, simplemente puede usar return;
fuente
Puede usar return false; Esto terminará su secuencia de comandos.
fuente
Esto debería funcionar como die ();
fuente
Función global die () para fines de desarrollo:
Utilice die ():
fuente
fuente