betydning
Ekspansjonsoperatoren (spread) er tre prikker (...) )。 Det er som inversen av en hvileparameter, som gjør et array om til en komma-separert sekvens av parametere.
Denne operatoren brukes hovedsakelig for funksjonskall.
I koden ovenfor, array.push(...) items) og legg til(...) tall), begge er kall til funksjoner, og de bruker begge utvidelsesoperatorer. Denne operatoren gjør et array om til en sekvens av parametere. Utvidelsesoperatorer kan brukes i kombinasjon med normalfunksjonsparametere, noe som er svært fleksibelt.
Bruk metode for alternative matriser
Siden utvidelsesoperatoren kan utvide arrayet, er det ikke nødvendig å bruke apply-metoden for å gjøre arrayet om til et argument for funksjonen.
Her er et praktisk eksempel på en utvidelsesoperator som erstatter apply-metoden, og anvender Math.max metode for å forenkle skrivingen av det største elementet i et array.
Koden ovenfor sier at siden JavaScript ikke gir en funksjon for å finne det største elementet i et array, kan du bare bruke Math.max funksjon for å gjøre arrayet om til en sekvens av parametere og deretter finne maksimal verdi. Med utvidelsesoperatøren kan du bruke Math.max direkte. Et annet eksempel er ved å legge til et array på halen til et annet array via push-funksjonen.
I ES5-skrivemetoden av koden ovenfor kan ikke parameterne til push-metoden være arrays, så vi må bruke push-metoden fleksibelt gjennom apply-metoden. Med utvidelsesoperatoren kan arrayet sendes direkte inn i push-metoden. Her er et annet eksempel.
Utvid anvendelsen av operatorer
(1) Sammenslåingsmatriser
Utvidelsesoperatoren gir en ny måte å skrive kombinasjonen av tall på.
(2) kombinert med dekonstruert tilordning
Utvidelsesoperatorer kan kombineres med dekonstruerte tildelinger for å generere matriser.
Hvis du bruker utvidelsesoperatoren for array-tilordning, kan den bare plasseres på siste siffer i parameteren, ellers vil en feil bli rapportert.
(3) Returverdien til funksjonen
JavaScript-funksjoner kan bare returnere én verdi, og hvis flere verdier må returneres, kun arrays eller objekter. Utvidelsesoperatorer gir en løsning for å løse dette problemet.
Koden ovenfor tar en linje med data fra databasen, utvider operatoren, og sender den direkte til konstruktøren Date.
(4) Streng
Utvidelsesoperatorer kan også gjøre strenger om til reelle matriser.
Den ovennevnte skriften har en viktig fordel, nemlig at den kan gjenkjenne 32-bits Unicode-tegn korrekt.
Den første måten å skrive koden ovenfor på, JavaScript gjenkjenner 32-bits Unicode-tegn som 2 tegn, og det er ikke noe problem med utvidelsesoperatorer. Så funksjonen som korrekt returnerer strengens lengde, kan skrives slik:
Dette er problemet for enhver funksjon som innebærer å manipulere 32-bits Unicode-tegn. Derfor er det best å omskrive dem alle med utvidelsesoperatorer.
I koden ovenfor, hvis du ikke bruker utvidelsesoperatoren, er strengreverseringsoperasjonen feil.
(5) Objekter som implementerer Iterator-grensesnittet
Ethvert objekt i Iterator-grensesnittet kan konverteres til et ekte array med en utvidelsesoperator.
I koden ovenfor returnerer querySelectorAll-metoden et nodeList-objekt. Det er ikke et array, men et array-lignende objekt. I dette tilfellet kan utvidelsesoperatoren gjøre det om til et reelt array fordi NodeList-objektet implementerer Iterator-grensesnittet. For de array-lignende objektene som ikke har et Iterator-grensesnitt distribuert, kan ikke utvidelsesoperatøren gjøre dem om til et ekte array.
I koden ovenfor er arrayLike et array-lignende objekt, men uten å distribuere Iterator-grensesnittet vil utvidelsesoperatøren rapportere en feil. I dette tilfellet kan du bruke Array.from-metoden for å konvertere arrayLike til et reelt array i stedet.
(6) Kart- og mengdestrukturer, generatorfunksjoner
Utvidelsesoperatoren kaller internt Iterator-grensesnittet til datastrukturen, så ethvert objekt med Iterator-grensesnitt kan bruke en utvidelsesoperator, som en kartstruktur.
Når Generator-funksjonen kjører, returnerer den et traverseringsobjekt, slik at utvidelsesoperatorer også kan brukes.
I koden ovenfor er variabelen go en Generator-funksjon, og etter kjøring returnerer den et traverseringsobjekt, og ved å kjøre en utvidelsesoperator på dette traverseringsobjektet vil verdiene som er hentet fra intern traversering konverteres til et array. Hvis du bruker en utvidelsesoperator for et objekt uten iteratorgrensesnitt, vil en feil bli rapportert.
|