Ich sehe immer wieder Funktionen, die so aussehen, in einer Codebasis, an der ich arbeite:
const func = ({ param1, param2 }) => {
//do stuff
}
Was genau macht das? Es fällt mir schwer, es bei Google zu finden, da ich nicht einmal sicher bin, wie das heißt oder wie ich es in einer Google-Suche beschreiben soll.
javascript
ecmascript-6
Nathan
quelle
quelle
Antworten:
Es ist destrukturierend , aber in den Parametern enthalten. Das Äquivalent ohne die Destrukturierung wäre:
quelle
Dadurch wird ein Objekt als Eigenschaft übergeben.
Es ist im Grunde eine Abkürzung für
Eine andere Möglichkeit, diese Technik ohne Parameter zu verwenden, ist die folgende. Betrachten wir für eine Sekunde, dass someObject diese Eigenschaften enthält.
quelle
Es ist eine Objektzerstörungsaufgabe. Wie ich haben Sie es vielleicht überraschend gefunden, weil die Syntax zur ES6-Objektzerstörung aussieht, sich aber NICHT wie eine Objektliteralkonstruktion verhält.
Es unterstützt die sehr knappe Form, in die Sie geraten sind, sowie das Umbenennen der Felder und Standardargumente:
Im Wesentlichen ist es {oldkeyname: newkeyname = defaultvalue, ...}. ':' ist NICHT das Schlüssel / Wert-Trennzeichen; '=' ist.
Einige Folgen dieser Entscheidung zum Sprachdesign sind, dass Sie möglicherweise Dinge wie tun müssen
Die zusätzlichen Parens verhindern, dass die linken geschweiften Klammern als Block analysiert werden, und das führende Semikolon verhindert, dass die Parens als Funktionsaufruf für eine Funktion in der vorherigen Zeile analysiert werden.
Weitere Informationen finden Sie unter: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Beachten Sie, dass Schlüsselfehler während der Objektzerstörungszuweisung NICHT ausgelöst werden. Sie erhalten nur "undefinierte" Werte, unabhängig davon, ob es sich um einen Schlüsselfehler oder einen anderen Fehler handelt, der stillschweigend als "undefiniert" weitergegeben wurde.
quelle