Gibt es so etwas wie “sterben” in JavaScript? Ich habe es mit “break” versucht, aber es funktioniert nicht 🙂
JavaScript-Äquivalent von PHPs sterben
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
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
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
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 ReferenceError
was ungefähr der Antwort von spudly entspricht – aber für Debugging-Zwecke ist die Eingabe kürzer.)
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();
-
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
Manuel Josef
Es gibt keinen Funktionsausgang, der php die() in JS entspricht. Wenn Sie keine Funktion verwenden, können Sie einfach return verwenden.
return;
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
,eval
usw. 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 vonreturn
undthrow
sind harmlos genug.– Beejor
13. Juni 2015 um 16:35 Uhr