Zwracając obiekt z funkcji strzałki, wydaje się, że konieczne jest użycie dodatkowego zestawu {}
i return
słowa kluczowego z powodu niejasności w gramatyce.
Oznacza to, że nie mogę pisać p => {foo: "bar"}
, ale muszę pisać p => { return {foo: "bar"}; }
.
Jeśli funkcja strzałki zwraca coś innego niż obiekt, znaki {}
i return
są niepotrzebne, np p => "foo"
. :
p => {foo: "bar"}
zwraca undefined
.
Zmodyfikowany p => {"foo": "bar"}
wyrzuca „ SyntaxError
: nieoczekiwany token: :
” ” .
Czy brakuje mi czegoś oczywistego?
źródło
p
jako klucz do dosłownego obiektu, to jak to zrobić:p => ({ [p]: 'bar' })
. Bez[]
tego będzie toundefined
albo dosłownie literap
.Możesz się zastanawiać, dlaczego składnia jest poprawna (ale nie działa zgodnie z oczekiwaniami):
Wynika to ze składni etykiet JavaScript :
Więc jeśli transponujesz powyższy kod do ES5, powinien on wyglądać następująco:
źródło
Jeśli treść funkcji strzałki jest owinięta nawiasami klamrowymi, nie jest niejawnie zwracana. Zawiń obiekt w nawiasy. Wyglądałoby to mniej więcej tak.
Po zawinięciu ciała w pareny funkcja powróci
{ foo: 'bar }
.Mam nadzieję, że to rozwiąże twój problem. Jeśli nie, napisałem niedawno artykuł o funkcjach Arrow, który opisuje go bardziej szczegółowo. Mam nadzieję, że uznasz to za przydatne. Funkcje strzałek JavaScript
źródło
właściwe sposoby
wyjaśnić
https://github.com/lydiahallie/javascript-questions/issues/220
https://mariusschulz.com/blog/returning-object-literals-from-arrow-functions-in-javascript
źródło
Kwestia:
Kiedy to robisz:
Tłumacz języka JavaScript myśli, że otwierasz blok kodu składający się z wielu instrukcji, aw tym bloku musisz wyraźnie wspomnieć o instrukcji return.
Rozwiązanie:
Jeśli wyrażenie funkcji strzałki ma jedną instrukcję , możesz użyć następującej składni:
Ale jeśli chcesz mieć wiele instrukcji , możesz użyć następującej składni:
W powyższym przykładzie pierwszy zestaw nawiasów klamrowych otwiera blok kodu z wieloma instrukcjami, a drugi zestaw nawiasów klamrowych jest przeznaczony dla obiektów dynamicznych. W bloku instrukcji zawierającej wiele instrukcji, musisz jawnie używać instrukcji return
Aby uzyskać więcej informacji, sprawdź Mozilla Docs dla wyrażeń funkcji strzałek JS
źródło
Zawsze możesz to sprawdzić, aby uzyskać więcej niestandardowych rozwiązań:
źródło