function a() { return 1; }
function b() { return(1); }
Ich habe den obigen Code in der Chrome-Konsole getestet und beide sind zurückgekehrt 1
.
function c() { return "1"; }
function d() { return("1"); }
Ich habe auch den obigen Code getestet und beide Funktionen zurückgegeben "1"
.
Was ist der Unterschied zwischen return
und return()
?
javascript
chris97ong
quelle
quelle
void(x)
,typeof(x)
void(0)
da es eine Abkürzung für undefiniert sein soll . Wenn es sich also um eine Kurzform handelt, warum sollten Sie unnötige Zeichen einfügen? ;-)void i = 1; // ReferenceError
vsvoid (i = 1); // undefined
Antworten:
Das gleiche wie zwischen
und
Das ist nichts. Die Klammern sind zulässig, da sie in jedem Ausdruck die Bewertungsreihenfolge beeinflussen dürfen. In Ihren Beispielen sind sie jedoch nur überflüssig.
return
ist keine Funktion, sondern eine Aussage . Es ähnelt syntaktisch anderen einfachen Kontrollflussanweisungen wiebreak
und verwendetcontinue
auch keine Klammern.quelle
return
eine Funktion erstellen würden, wie würden Sie einen Wert daraus zurückgeben?Es gibt keinen Unterschied.
return
ist kein Funktionsaufruf, sondern eine Sprachanweisung. Alles, was Sie mit den Klammern tun, ist einfach Ihren Rückgabewert zu gruppieren, damit er ausgewertet werden kann. Zum Beispiel könnten Sie schreiben:In diesem Fall geben Sie den Wert der Anweisung zurück
x == 0
, der einen Booleschen Wert zurückgibttrue
oderfalse
vom Wert von abhängtx
.quelle
Eigentlich hier Vorrang von
()
höher, daher wird zuerst bewertet:Hier wird zunächst
("1")
folgendermaßen ausgewertet:Die obige Aussage entspricht also:
Siehe visuell:
Es gibt also im Grunde keinen Unterschied in der Funktionalität, aber der zweite kann etwas vernachlässigbar langsam sein, da er erstens die Klammern löst.
quelle
Es gibt absolut keinen Unterschied. Wenn Sie sich die JS- Spezifikation (ECMAScript) der return- Anweisung ansehen . Unter anderem sagt es Ihnen:
dass Sie Ausdruck geben können
return
. Die Expression wirdhello
,Math.abs(x)
,yourCustomFunc(7)
, oder in Ihrem zweiten Fall kann dies sein1
oder(1)
. Der Ausdruck1
nach der Bewertung ist der gleiche wie(1)
und der gleiche wie(((((1))))))
oder sogar wie etwas wirklich Seltsames(+(!(+(!1))))
.quelle
Es gibt keinen Unterschied, die Klammern sind optional. Siehe MSDN :
quelle
return
Erklärung viel häufiger gefragt . : P MS hat es wahrscheinlich satt, die Frage von JS Noobs zu beantworten.()
ist nicht Teil der return-Anweisung.return (expression
undreturn expression)
ist legal.return ()
,return (
undreturn )
: Preturn
isteine Anweisung,ein Schlüsselwort, das die return-Anweisung startet , keine Funktion.Wie bereits erwähnt, wirken sich die zusätzlichen Klammern auf die Auswertungsreihenfolge aus, werden jedoch nicht zum "Ausführen" der genannten Funktion verwendet
return
. Deshalb funktionieren diese Zeilen problemlos:Sie sind praktisch identisch mit diesen Zeilen:
Der Grund, warum
return()
ein Syntaxfehler ausgelöst wird, ist der genaue Grund, warum die folgende Zeile einen Fehler auslöst (Rückgabeanweisung zum Vergleich enthalten):quelle
return
nichts mehr enthalten ist, wird davon ausgegangen, dass Sie zurückkehren möchtenundefined
.return
für sich genommen eine return-Anweisung.Es gibt einen großen Unterschied für den Menschen und keinen Unterschied für die Javascript-Engine.
return 1
ist eine Aussage, die erklärt, dass wir die Funktion sofort verlassen müssen, was den Wert 1 ergibt.return(1)
ist dieselbe Aussage, die durch die idiotische Konvention als Funktionsaufruf getarnt ist, dass Sie nicht verpflichtet sind, Leerzeichen außerhalb von Klammern in Javascript einzufügen. Wenn Sie solchen Code im Produktionssystem verwenden würden, kommt jeder Betreuer mit Pfählen und Fackeln in Ihr Büro, nachdem er einige Zeit damit verbracht hat, zu entscheiden, ob Sie wirklichreturn()
irgendwo in der Codebasis eine Funktion haben oder einfach nicht wissen, wasreturn
Schlüsselwort bestimmt ist.Wie viele andere Leute bereits richtig gesagt haben, tun Klammern nichts anderes als "Gruppe" mit höherer Priorität als das Literal für die Zahl
1
.quelle
return
Funktion. "die idiotische Konvention, dass Sie nicht verpflichtet sind, Leerzeichen außerhalb von Klammern in Javascript einzufügen" - fast keine Sprache erfordert dies; Dieses Idiotikum zu nennen ist idiotisch. "Jeder Betreuer wird mit Pfahl und Fackeln in Ihr Büro kommen" - niemand würde dies tun.return(1)
ist eine schlechte Praxis, aber Menschen, die sich über solche Dinge aufregen, verschwenden Ressourcen und schaffen eine schlechte Atmosphäre.return
Funktion" - Die Tatsache, dass der Dolmetscher Ihnen verbietet, eine Funktion mit Namen zu registrieren,return
hilft dem Leser des Codes nicht, seine geistige Gesundheit nicht zuerst in Frage zu stellen. Daher ist dieser Code Verschwendung.return(1)
ist nicht nur "schlechte Praxis", sondern ein gefährliches Zeichen dafür, dass jemand nicht weiß, was er tut!return
hat (in allen mir bekannten Sprachen, die dieses Schlüsselwort haben) die geringste Priorität. Wenn der optionale Ausdruck vorhanden ist, wird er immer zuerst ausgewertet.In der return-Anweisung sind die Klammern um den Ausdruck bereits integriert.
In JavaScript besteht die return-Anweisung wie in vielen anderen Sprachen (wie C, C ++, Java, Python) aus zwei Teilen: dem Schlüsselwort
return
und einem (optionalen) Ausdruck. In jedem Fall wird alles, was auf dasreturn
Schlüsselwort folgt, zuerst als Ausdruck ausgewertet. Danach wird die return-Anweisung "ausgeführt", indem das Steuerelement an den Aufrufer zurückgegeben wird.Klammern zu verwenden oder nicht zu verwenden, ist eine Frage des Stils , während die meisten Stilrichtlinien sie für triviale Fälle wie den in Ihrer Frage angegebenen verbieten, da dadurch die Rückgabe fälschlicherweise wie eine Funktion aussieht.
Späterer Nachtrag
Wenn Sie mit oder ohne Klammern arbeiten, vergessen Sie niemals, den optionalen Ausdruck hinter dem
return
, dh in derselben Zeile, zu platzieren. Die eigentliche Gefahr beireturn
JavaScript besteht darin, danach einen Zeilenumbruch hinzuzufügen:... weil die obige
test
Funktion zurückkehrtundefined
.quelle
Durch Hinzufügen von Klammern haben wir sichergestellt, dass Javascript kein Semikolon vor mehreren Anweisungen einfügt, die nach der Rückgabe geschrieben wurden. Als Referenz: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar #Automatic_semicolon_insertion
Beispiel :
return a + b;
verwandelt sich in
return; a + b;
von ASI.
Die Konsole warnt "Nicht erreichbarer Code nach Rückgabeanweisung". Um dieses Problem zu vermeiden (um ASI zu verhindern), können Sie Klammern verwenden:
return ( a + b );
Code kopiert von: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
quelle