Warum bei der Rückgabe in JavaScript Klammern verwenden?

Lesezeit: 5 Minuten

Benutzer-Avatar
stiller_coder

Im Code des Restify-Frameworks habe ich diese Funktion gefunden:

function queryParser(options) {

    function parseQueryString(req, res, next) {
        // Some code goes there
        return (next());
    }
    return (parseQueryString);
}

Warum sollte der Autor schreiben return (next()); und return (parseQueryString);? Braucht es dort Klammern und wenn ja, warum?

  • Es ist nicht notwendig. Es ist nur eine Wahl.

    – AbhinavRanjan

    29. Dezember 2013 um 11:16 Uhr

  • Es könnte auch verwendet werden, um zu vermeiden automatische Semikolon-Einfügung.

    – Giannis Christofakis

    29. Dezember 2015 um 21:44 Uhr

  • Interessanter Beitrag hier zum Thema jamesknelson.com/javascript-return-parenthesis danke für die tolle Frage hat mir geholfen, eine Menge zu lernen

    – Katto

    11. Mai 2018 um 12:41 Uhr

Benutzer-Avatar
Andru

Die Verwendung von Klammern bei der Rückgabe ist erforderlich, wenn Sie möchten Schreiben Sie Ihre Rückgabeerklärung über mehrere Zeilen.

React.js bietet ein nützliches Beispiel. In der Rückgabeerklärung des render -Property in einer Komponente möchten Sie normalerweise den zurückgegebenen JSX aus Gründen der Lesbarkeit auf mehrere Zeilen verteilen, z.

render: function() {
    return (
        <div className="foo">
            <h1>Headline</h1>
            <MyComponent data={this.state.data} />
        </div>
    );
}

Ohne Klammern führt dies zu einem Fehler!


Allgemeiner gesagt führt das Fehlen von Klammern beim Verteilen einer return-Anweisung über mehrere Zeilen zu einem Fehler. Das folgende Beispiel wird richtig ausführen:

var foo = function() {
  var x = 3;
  return (
    x 
    + 
    1
  );
};
console.log(foo());

Während das Folgende (ohne die Klammern) wird Fehler werfen:

var foo = function() {
  var x = 3;
  return 
    x 
    + 
    1
  ;
};
console.log(foo());

  • Dies sollte die akzeptierte Antwort sein. Return erlaubt nativ keine Anweisungen über mehrere Zeilen

    – Ruf an bei

    12. April 2018 um 18:49 Uhr


  • @Callat Sicher, es erlaubt mehrzeilige Ausdrücke. Sie dürfen nur keinen Zeilenumbruch direkt nach dem setzen returnsonst wird der Ausdruck zu einer eigenen Aussage – aber das ist auch alles.

    – Bergi

    17. April 2021 um 18:33 Uhr

Benutzer-Avatar
Darin Dimitrow

Es muss nicht so sein, aber es ist gültiger JavaScript-Code. Eigentlich ist es ziemlich ungewöhnlich, eine solche Syntax zu sehen. Ich denke, es ist eine persönliche Vorliebe des Autors.

  • @silent_coder In diesem speziellen Fall ist es nichts für. Normalerweise sieht man Klammern gewohnt beifügen visuell schwer verständliche Teile des Codes, dh bei der Verwendung komplexer ternäre Operatoren. Im obigen Code könnten die runden Klammern sogar für unerfahrene Entwickler irreführend sein, denn Rückkehr in diesem Fall sieht es eher aus wie a Funktionsaufruf.

    – Roko C. Buljan

    29. Dezember 2013 um 11:19 Uhr


  • Ruf mich an unerfahrener Entwickler aber für einen Moment sorgten diese Klammern für Verwirrung und ich habe ein wenig gesucht, um es herauszufinden, da es genau wie a aussah Funktionsaufruf 🙂

    – Mars Robertson

    5. März 2015 um 17:14 Uhr

  • Dies ist normalerweise eine Syntax, die von C++14 übernommen wird, wo sie Auswirkungen hat oder von Programmierern der alten Schule aus der Zeit, als C die populäre Sprache seiner Zeit war; es war nur eine Konvention für einige Programmierer.

    – 8 Protonen

    23. März 2016 um 21:42 Uhr


  • Verwenden Sie niemals Klammern für unäre Operatoren wie delete, typeof und void oder nach Schlüsselwörtern wie return, throw sowie anderen (case, in oder new). google.github.io/styleguide/javascriptguide.xml

    – Artur Stary

    14. Juli 2016 um 11:42 Uhr

Benutzer-Avatar
Basyonisch

Klammern werden in einer return-Anweisung für zwei Zwecke verwendet.

  • Zur Unterstützung von mehrzeiligen Ausdrücken, wie in @Andru Answer erwähnt.
  • Um das Zurückgeben von Objekten in Pfeilfunktionen wie folgt zuzulassen:

() => ({ name: 'Amanda' }) // Shorthand to return an object

Dies entspricht

() => {
 return { name : 'Amanda' }
}

Weitere Informationen finden Sie in diesem Artikel.
https://medium.com/@leannezhang/curly-braces-versus-parenthesis-in-reactjs-4d3ffd33128f

  • Großer Fokus auf das Detail der Pfeilfunktion!

    – Nuno Prata

    14. Februar 2019 um 17:05 Uhr


  • Es ist wichtig zu beachten, dass in () => ({ name: 'Amanda' }) Die Verwendung von Klammern ist keine Abkürzung: Der Code in geschweiften Klammern wird als eine Folge von Anweisungen analysiert

    – Paulokleon

    18. Mai 2020 um 15:18 Uhr

  • Ist es erlaubt, Klammern innerhalb der geschweiften Klammern für die Pfeilfunktion zu verwenden, oder muss eine von ihnen verwendet werden?

    – vikramvi

    24. Mai 2021 um 12:26 Uhr

// Create a component named MessageComponent
var MessageComponent = React.createClass({
  render: function() {
    return (
      <div>{this.props.message}</div>
    );
  }
});

ANMERKUNG Warum brauchen wir die Klammern um die return-Anweisung (Zeile 3)? Dies liegt an der automatischen Semikolon-Einfügung von JavaScript. Ohne die Klammern würde JavaScript die folgenden Zeilen ignorieren und ohne Wert zurückgeben. Wenn der JSX in derselben Zeile wie der Return beginnt, werden keine Klammern benötigt.

Genommen von hier.

Benutzer-Avatar
Brian Weiner

Nur um das zu ergänzen, was andere gesagt haben.

Die Verwendung von Klammern um den Rückgabewert ist gültiges JavaScript, aber meistens eine schlechte Sache.

Meistens schlecht, weil es nichts hinzufügt, aber die Größe des JavaScripts erhöht, was bedeutet, dass mehr in den Browser heruntergeladen werden muss. Ja, die meisten Menschen haben schnelle Breitbandverbindungen, aber vergessen Sie nicht, dass alles, was Sie in die JavaScript-Datei einfügen, heruntergeladen werden muss, um unnötiges Aufblähen des Codes zu vermeiden. Dies spielt wahrscheinlich keine Rolle, wenn Sie ein Tool zum Komprimieren Ihres Codes verwenden (Minifier wurde bereits erwähnt), aber nicht jeder tut es.

Manchmal kann es die Lesbarkeit verbessern. Es fällt mir schwer, in diesem Fall ein Beispiel zu finden, aber wenn die Verwendung von Klammern Ihr JavaScript für Sie als Entwickler klarer und damit einfacher zu warten macht, dann verwenden Sie sie – auch wenn es gegen das verstößt, was ich über das Aufblähen von Code gesagt habe.

Benutzer-Avatar
Peter Mortensen

Warum sollte der Autor return (next()) schreiben? … ?

Bezüglich next():

Wahrscheinlich, weil seine Funktion in etwa so ist:

function next()
{
  var i=0;
  return function (){
    // Do something with that closured i....
  }
}

Bezüglich (xxx);:

Es ist unnötig. Jeder Minifier wird es entfernen.

Beispiel (uglifyJS):

Geben Sie hier die Bildbeschreibung ein

wird:

Geben Sie hier die Bildbeschreibung ein

Benutzer-Avatar
Hexmann

Ich habe es versucht:

var a = function() {
          return true || true
        }
console.log(a());

//return: true
var a = function() {
          return
              true || true
        }
console.log(a());

//return: undefined
var a = function() {
          return (
                   true || true
                 )
        }
console.log(a());

//return: true

1018160cookie-checkWarum bei der Rückgabe in JavaScript Klammern verwenden?

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

Privacy policy