Ciągle widzę funkcje, które wyglądają tak w bazie kodu, nad którą pracuję:
const func = ({ param1, param2 }) => {
//do stuff
}
Co to właściwie robi? Trudno mi go znaleźć w Google, ponieważ nie jestem nawet pewien, jak to się nazywa ani jak to opisać w wyszukiwarce Google.
javascript
ecmascript-6
Nathan
źródło
źródło
Odpowiedzi:
Jest to destrukturyzacja , ale zawarta w parametrach. Odpowiednik bez destrukturyzacji to:
źródło
To przekazuje obiekt jako własność.
Jest to w zasadzie skrót od
Inny sposób użycia tej techniki bez parametrów jest następujący, zastanówmy się przez chwilę, że someObject zawiera te właściwości.
źródło
Jest to zadanie polegające na niszczeniu obiektów. Podobnie jak ja, mogłeś uznać to za zaskakujące, ponieważ składnia destrukturyzacji obiektów ES6 wygląda jak, ale NIE zachowuje się jak konstrukcja dosłowna obiektu.
Obsługuje bardzo zwięzłą formę, na którą się natknąłeś, a także zmienia nazwy pól i domyślnych argumentów:
Zasadniczo jest to {oldkeyname: newkeyname = defaultvalue, ...}. „:” NIE jest separatorem klucz / wartość; „=” jest.
Pewnym skutkiem tej decyzji dotyczącej projektowania języka jest to, że być może będziesz musiał zrobić takie rzeczy
Dodatkowe pareny zapobiegają analizowaniu lewego nawiasu klamrowego jako bloku, a wiodący średnik zapobiega analizowaniu paren jako wywołania funkcji do funkcji z poprzedniego wiersza.
Aby uzyskać więcej informacji, zobacz: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destruifying_assignment
Uwaga, kluczowe błędy podczas przypisywania destrukcji obiektów NIE są zgłaszane; po prostu otrzymujesz wartości „niezdefiniowane”, niezależnie od tego, czy jest to błąd klucza, czy inny błąd, który został po cichu propagowany jako „nieokreślony”.
źródło