JavaScript-Äquivalent von PHPs sterben

Lesezeit: 5 Minuten

Gibt es so etwas wie “sterben” in JavaScript? Ich habe es mit “break” versucht, aber es funktioniert nicht 🙂

  • siehe dies: stackoverflow.com/questions/550574/…

    – stefita

    1. September 2009 um 9:20 Uhr

  • “die”, wie “goto” entsprechen nicht der strukturierten Programmierung. Diese Arten von Anweisungen sollten niemals für ernsthafte Projekte verwendet werden. en.wikipedia.org/wiki/Structured_programming

    – Adrian Maire

    25. April 2013 um 14:10 Uhr

  • function die(str) {throw new Error(str || "Script ended by death");} Oder etwas XD Viele bessere Optionen da draußen, aber das würde funktionieren. Könnte gut zum Debuggen sein, wenn Sie nur den ersten Teil eines Skripts ausführen möchten, um sicherzustellen, dass es funktioniert.

    – Niet the Dark Absol

    18. Oktober 2013 um 19:37 Uhr


  • @stefita Warum ist dein Kommentar nicht in den Antworten? exit() war genau das, was ich brauche. Die andere Möglichkeit besteht darin, eine Autocall-Schleife auszuführen, die 1599 Mal ausgeführt wird und dann die Ausführung stoppt. Danke.

    – m3nda

    4. Februar 2015 um 19:15 Uhr


  • @AdrianMaire Ihr Herz ist am richtigen Ort, aber das „Warum“ einer Frage sollte nicht in Frage gestellt werden. Die Übel von die, goto, evalusw. werden endlos wiedergekäut (und nicht ohne Wert), aber sie alle haben ihre spezielle Verwendung, insbesondere für das Low-Level-Debugging. Andernfalls würden Sprachen sie nicht enthalten. In diesem Fall sind die JS-Äquivalente von return und throw sind harmlos genug.

    – Beejor

    13. Juni 2015 um 16:35 Uhr

throw new Error("my error message");

  • das ist absolut die Antwort und funktioniert genauso wie die(); allerdings sollte man sich nicht um den roten “1 Error” von firebug kümmern!

    – Alexar

    21. Dezember 2010 um 23:52 Uhr


  • Ich denke, wenn PHP ein “Firebug” -Äquivalent hat, sollte es auch “1 error” auf die() schreiben 😉 Gute Antwort!

    – Adrian Maire

    25. April 2013 um 14:04 Uhr


  • Erzeugt dies nicht ein Warndialogfeld in IE8?

    – sbichenko

    28. September 2013 um 14:15 Uhr

  • Kein 1-zu-1-Äquivalent, da PHP auch nicht abgefangene Ausnahmen hat.

    – Brillant

    30. Mai 2014 um 20:07 Uhr

  • Dies wird die Ausführung AFAIK nicht vollständig stoppen, sondern nur ungefähr um den Wurf herum. Einzelheiten sind sehr verschwommen, aber ich bin mir ziemlich sicher, dass das Skript woanders weiterlaufen kann.

    – Rolf

    29. Januar 2016 um 10:36 Uhr

Benutzer-Avatar
Eli Gray

Du kannst nur break ein Blockbereich, wenn Sie ihn beschriften. Zum Beispiel:

myBlock: {
  var a = 0;
  break myBlock;
  a = 1; // this is never run
};
a === 0;

Sie können einen Blockbereich nicht innerhalb einer Funktion im Bereich unterbrechen. Dies bedeutet, dass Sie Folgendes nicht tun können:

foo: { // this doesn't work
  (function() {
    break foo;
  }());
}

Sie können jedoch etwas Ähnliches mit Funktionen tun:

function myFunction() {myFunction:{
  // you can now use break myFunction; instead of return;
}}

  • Ich wusste nie, wie man einen Blockbereich beschriftet, geschweige denn, einen Blockbereich zu schreiben. Bedeutet es das foo: {} ist ein Objekt?

    – bereichern

    7. Januar 2012 um 18:40 Uhr


  • Nein. Es ist ein Blockbereich. Es ist dasselbe wie foo: if(true){...}

    – Eli Gray

    7. Januar 2012 um 18:52 Uhr

  • Gibt es eine Alternative, da Sie einen Blockbereich nicht innerhalb einer Funktion im Bereich aufheben können?

    – bb216b3acfd8f72cbc8f899d4d6963

    22. Mai 2019 um 22:31 Uhr

Benutzer-Avatar
siehz

Sie können einfach die verwenden return; Beispiel

$(document).ready(function () {
        alert(1);
        return;
        alert(2);
        alert(3);
        alert(4);
});

Die Rückkehr kehrt zur Hauptaufruferfunktion test1(); und von dort weiter zu test3();

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<script type="text/javascript">
function test1(){
    test2();
    test3();
}

function test2(){
    alert(2);
    return;
    test4();
    test5();
}

function test3(){
    alert(3);
}

function test4(){
    alert(4);
}

function test5(){
    alert(5);
}
test1();

</script>
</body>
</html>

aber wenn du einfach throw ” hinzufügst; Dadurch wird die Ausführung vollständig gestoppt, ohne dass Fehler verursacht werden.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<script type="text/javascript">
function test1(){
    test2();
    test3();
}

function test2(){
    alert(2);
    throw '';   
    test4();
    test5();
}

function test3(){
    alert(3);
}

function test4(){
    alert(4);
}

function test5(){
    alert(5);
}
test1();

</script>
</body>
</html>

Dies wurde mit Firefox und Chrome getestet. Ich weiß nicht, wie dies von IE oder Safari gehandhabt wird

  • Soweit ich weiss, return verlässt nur die einschließende Funktion. Es funktioniert nicht, wenn Sie die Ausführung des gesamten Skripts stoppen möchten.

    – Andre Leria

    18. April 2013 um 18:39 Uhr

  • hmmm ja, du hast recht, es stoppt nicht die Ausführung des gesamten Skripts.

    – siehz

    22. April 2013 um 9:26 Uhr

  • throw "": …ohne Fehler zu verursachen… – Nicht ganz… Uncaught ""

    – FZ

    2. Juli 2019 um 8:31 Uhr

Benutzer-Avatar
Brillant

Ruf einfach an die() ohne es jemals zu definieren. Ihr Skript wird abstürzen. 🙂

Wenn ich das mache, rufe ich normalerweise an discombobulate() stattdessen, aber das Prinzip ist das gleiche.

(Eigentlich wirft das eine ReferenceErrorwas ungefähr der Antwort von spudly entspricht – aber für Debugging-Zwecke ist die Eingabe kürzer.)

Benutzer-Avatar
rickbsgu

Wenn Sie nodejs verwenden, können Sie verwenden

process.exit(<code>);

  • Wenn es um node.js ginge, hätte die Frage das Tag node.js

    – FelixSFD

    19. November 2016 um 19:20 Uhr

  • @FelixSFD: Mir hat es trotzdem geholfen, da ich genau danach gesucht habe, die Tags komplett außer Acht gelassen habe 😉

    – DE

    6. Januar 2017 um 13:42 Uhr

Es ist möglich, Ihre eigene Version von PHPs Würfeln zu würfeln:

function die(msg)
{
    throw msg;
}

function test(arg1)
{
    arg1 = arg1 || die("arg1 is missing"); 
}

test();

JSFiddle-Beispiel

  • Wenn es um node.js ginge, hätte die Frage das Tag node.js

    – FelixSFD

    19. November 2016 um 19:20 Uhr

  • @FelixSFD: Mir hat es trotzdem geholfen, da ich genau danach gesucht habe, die Tags komplett außer Acht gelassen habe 😉

    – DE

    6. Januar 2017 um 13:42 Uhr

Benutzer-Avatar
Manuel Josef

Es gibt keinen Funktionsausgang, der php die() in JS entspricht. Wenn Sie keine Funktion verwenden, können Sie einfach return verwenden.

return;

1245540cookie-checkJavaScript-Äquivalent von PHPs sterben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy