znaczenie
Operator rozwinięcia (spread) to trzy kropki (...) )。 To jak odwrotność parametru spoczynkowego, zamieniający tablicę w sekwencję parametrów oddzieloną przecinkami.
Ten operator jest głównie używany do wywołań funkcji.
W powyższym kodzie array.push(...) przedmioty) oraz dodawanie(...) liczby), które są wywołaniami funkcji i wykorzystują operatory rozszerzenia. Ten operator zamienia tablicę w ciąg parametrów. Operatory rozszerzenia można stosować w połączeniu z parametrami funkcji normalnych, co jest bardzo elastyczne.
Zastosowanie metody dla alternatywnych tablic
Ponieważ operator rozszerzenia może rozwijać tablicę, nie ma potrzeby stosowania metody apply, aby przekształcić tablicę w argument do funkcji.
Oto praktyczny przykład operatora rozszerzenia zastępującego metodę stosowania, stosując Math.max metodę uproszczającą zapis największego elementu tablicy.
Powyższy kod mówi, że ponieważ JavaScript nie udostępnia funkcji do znalezienia największego elementu tablicy, można użyć Math.max funkcji, aby przekształcić tablicę w sekwencję parametrów, a następnie znaleźć maksymalną wartość. Z operatorem rozszerzenia możesz korzystać z Math.max bezpośrednio. Innym przykładem jest dodanie tablicy do ogona innej tablicy za pomocą funkcji push.
W metodzie zapisu ES5 powyższego kodu parametry metody push nie mogą być tablicami, więc musimy stosować metodę push elastycznie za pomocą metody apply. Za pomocą operatora rozszerzenia tablica może być przekazywana bezpośrednio do metody push. Oto kolejny przykład.
Rozszerzenie zastosowania operatorów
(1) Tablice scalania
Operator rozszerzenia oferuje nowy sposób zapisu kombinacji liczb.
(2) połączone z rozłożonym przypisaniem
Operatory rozszerzenia można łączyć z dekonstrukcyjnymi przypisaniami, aby generować tablice.
Jeśli używasz operatora rozszerzenia do przypisywania tablicy, można go umieścić tylko na ostatniej cyfrze parametru, w przeciwnym razie zostanie zgłoszony błąd.
(3) Wartość zwrotu funkcji
Funkcje JavaScript mogą zwracać tylko jedną wartość, a jeśli trzeba zwrócić wiele wartości, to tylko tablice lub obiekty. Operatory rozszerzenia stanowią obejście tego problemu.
Powyższy kod pobiera linię danych z bazy danych, rozszerza operator i przekazuje ją bezpośrednio konstruktorowi Date.
(4) Struna
Operatory rozszerzenia mogą także zamieniać ciągi znaków w rzeczywiste tablice.
Powyższe zapisy mają ważną zaletę, a mianowicie potrafi poprawnie rozpoznawać 32-bitowe znaki Unicode.
Pierwszym sposobem napisania powyższego kodu jest JavaScript, który rozpoznaje 32-bitowe znaki Unicode jako 2 znaki, i nie ma problemu z operatorami rozszerzenia. Funkcja poprawnie zwracająca długość ciągu można zapisać następująco:
To problem każdej funkcji polegającej na manipulacji 32-bitowymi znakami Unicode. Dlatego najlepiej jest przepisać je wszystkie za pomocą operatorów rozszerzenia.
W powyższym kodzie, jeśli nie używasz operatora rozszerzenia, operacja odwrócenia ciągu jest nieprawidłowa.
(5) Obiekty implementujące interfejs Iteratora
Każdy obiekt w interfejsie Iteratora może zostać przekształcony w prawdziwą tablicę za pomocą operatora rozszerzenia.
W powyższym kodzie metoda querySelectorAll zwraca obiekt nodeList. Nie jest to tablica, lecz obiekt przypominający tablicę. W takim przypadku operator rozszerzenia może przekształcić ją w prawdziwą tablicę, ponieważ obiekt NodeList implementuje interfejs Iterator. Dla tych obiektów przypominających tablice, które nie mają wdrożonego interfejsu Iteratora, operator rozszerzenia nie może przekształcić ich w prawdziwą tablicę.
W powyższym kodzie arrayLike jest obiektem przypominającym tablicę, ale bez wdrożenia interfejsu Iteratora operator rozszerzenia zgłosi błąd. W takim przypadku możesz użyć metody Array.from, aby przekonwertować arrayLike na prawdziwą tablicę.
(6) Struktury odwzorowania i zbiorów, funkcje generatora
Operator rozszerzenia wewnętrznie wywołuje interfejs Iteratora struktury danych, więc każdy obiekt z interfejsem Iteratora może używać operatora rozszerzenia, takiego jak struktura Map.
Gdy funkcja Generator działa, zwraca obiekt przesuwający, więc można również użyć operatorów rozszerzenia.
W powyższym kodzie zmienna go jest funkcją generatora, a po wykonaniu zwraca obiekt przesuwający, a wykonanie operatora rozszerzenia na tym obiekcie przekształca wartości uzyskane z wewnętrznego przesuwania w tablicę. Jeśli użyjesz operatora rozszerzenia dla obiektu bez interfejsu iteratora, błąd zostanie zgłoszony.
|