Gibt es so etwas wie "sterben" in JavaScript? Ich habe es mit "break" versucht, funktioniert aber nicht :)
javascript
Cupakob
quelle
quelle
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.die
,goto
,eval
usw. sind endlos erbrochen (und nicht ohne Verdienst), aber sie haben alle ihre speziellen Anwendungen, vor allem für Low-Level - Debugging. Andernfalls würden die Sprachen sie nicht enthalten. In diesem Fall sind die JS-Äquivalente vonreturn
undthrow
harmlos genug.Antworten:
Sie können
break
einen Blockbereich nur dann kennzeichnen, wenn Sie ihn beschriften. Beispielsweise:Sie können einen Blockbereich nicht innerhalb einer Funktion im Bereich aufteilen. Das heißt, Sie können nichts tun wie:
Mit Funktionen können Sie jedoch etwas Ähnliches tun:
quelle
foo: {}
es sich um ein Objekt handelt?foo: if(true){...}
quelle
Sie können einfach das
return;
Beispiel verwendenDie Rückkehr kehrt zur Hauptaufruffunktion test1 () zurück; und weiter von dort zu test3 ();
aber wenn Sie nur werfen werfen ''; Dadurch wird die Ausführung vollständig gestoppt, ohne dass Fehler auftreten.
Dies wird mit Firefox und Chrom getestet. Ich weiß nicht, wie das von IE oder Safari gehandhabt wird
quelle
return
nur die umschließende Funktion beendet. Es funktioniert nicht, wenn Sie die Ausführung des gesamten Skripts beenden möchten.throw ""
: ... ohne Fehler zu verursachen ... - Nicht ganz ...Uncaught ""
Ruf einfach an
die()
ohne es jemals zu definieren. Ihr Skript wird abstürzen. :) :)Wenn ich das mache, rufe ich normalerweise an
discombobulate()
stattdessen an, aber das Prinzip ist das gleiche.(Tatsächlich wirft dies ein
ReferenceError
, was ungefähr der Antwort von Spudly entspricht - aber für Debugging-Zwecke ist die Eingabe kürzer.)quelle
die
intuitiv und prägnant es ist. Es fehlt der Vorteilthrow
, eine bestimmte Fehlermeldung zu protokollieren, aber manchmal reicht nur die Zeilennummer aus. Übrigens,die;
ohne die Klammern (un-) funktioniert auch.Es ist möglich, eine eigene Version des PHP-Würfels zu würfeln:
JSFiddle-Beispiel
quelle
var a = arguments[3] || die('message')
. Stattdessen denke ich, dass sterben sollte:function die(msg) { return eval(`throw "${msg}"`);)
aber selbst dann denke ich, dass dies nur hart auf der Linie platziert werden sollte, die bricht, so dass der Fehler zeigt, welche Linie fehlgeschlagen ist, z. B.this.inputFile = argv[2] || eval('throw "this program requires an input file."');
Wenn Sie nodejs verwenden, können Sie verwenden
quelle
benutze Firebug und die herrliche ...
und lassen Sie den Debugger niemals einen Schritt nach vorne machen.
Error
Sauberer als ein richtiges Innit zu werfen?quelle
Es gibt keine exakte Entsprechung des Sprachkonstrukts
die
von PHP in Javascript .die
in PHP ist so ziemlich gleichSystem.exit()
in Java , das das aktuelle Skript beendet und Shutdown-Hooks aufruft. Wie einige Benutzer vorgeschlagen haben;throw Error
kann in einigen Fällen verwendet werden, garantiert jedoch niemals die Beendigung des aktuellen Skripts. Ihrethrow
Anweisung kann immer von einem Ausnahmebehandlungsblock umgeben sein - es sei denn, Sie rufen ihn auf dem obersten Skriptblock auf, der schließlich nur den von Ihnen ausgeführten Skriptblock beendet.Es wird jedoch nicht verhindert, dass der zweite Block hier ausgeführt wird (druckt Hallo):
quelle
Sie können versuchen mit:
das funktioniert im Falle eines Stoppprozesses.
quelle
In JS gibt es keinen Funktionsexit, der php die () entspricht. Wenn Sie keine Funktion verwenden, können Sie einfach return verwenden.
quelle
Sie können return false verwenden. Dadurch wird Ihr Skript beendet.
quelle
Dies sollte eine Art Arbeit wie die () sein;
quelle
Globale die () Funktion für Entwicklungszwecke:
Benutze die ():
quelle
quelle