betydning
Udvidelsesoperatoren (spredningen) er tre prikker (...) )。 Det er som det inverse af en hvileparameter, der omdanner et array til en komma-separeret sekvens af parametre.
Denne operator bruges hovedsageligt til funktionskald.
I koden ovenfor er array.push(...) items) og add(...) tal), som begge er kald til funktioner, og de bruger begge udvidelsesoperatorer. Denne operator omdanner et array til en sekvens af parametre. Udvidelsesoperatorer kan bruges i kombination med normalfunktionsparametre, hvilket er meget fleksibelt.
Anvend metoden for alternative arrays
Da udvidelsesoperatoren kan udvide arrayet, er der ikke behov for at bruge apply-metoden til at omdanne arrayet til et argument til funktionen.
Her er et praktisk eksempel på en udvidelsesoperator, der erstatter apply-metoden, hvor Math.max metode anvendes for at forenkle skrivningen af det største element i et array.
Ovenstående kode siger, at da JavaScript ikke giver en funktion til at finde det største element i et array, kan du kun anvende Math.max funktion til at omdanne arrayet til en sekvens af parametre og derefter finde den maksimale værdi. Med extension-operatoren kan du bruge Math.max direkte. Et andet eksempel er ved at tilføje et array til halen af et andet array via push-funktionen.
I ES5-skrivemetoden af ovenstående kode kan push-metodens parametre ikke være arrays, så vi må bruge push-metoden fleksibelt gennem apply-metoden. Med udvidelsesoperatoren kan arrayet føres direkte ind i push-metoden. Her er et andet eksempel.
Udvid anvendelsen af operatorer
(1) Sammenfletting af arrays
Udvidelsesoperatoren giver en ny måde at skrive kombinationen af tal på.
(2) kombineret med dekonstrueret tildeling
Udvidelsesoperatorer kan kombineres med dekonstruerede tildelinger for at generere arrays.
Hvis du bruger udvidelsesoperatoren til array-tildeling, kan den kun placeres i det sidste ciffer i parameteren, ellers vil der blive rapporteret en fejl.
(3) Returværdien af funktionen
JavaScript-funktioner kan kun returnere én værdi, og hvis flere værdier skal returneres, kun arrays eller objekter. Udvidelsesoperatorer giver en løsning på dette problem.
Ovenstående kode tager en linje data fra databasen, udvider operatoren og sender den direkte til konstruktøren Date.
(4) Streng
Udvidelsesoperatorer kan også omdanne strenge til reelle arrays.
Ovenstående skrivning har en vigtig fordel, nemlig at den korrekt kan genkende 32-bit Unicode-tegn.
Den første måde at skrive ovenstående kode på, JavaScript, genkender 32-bit Unicode-tegn som 2 tegn, og der er intet problem med udvidelsesoperatorer. Så funktionen, der korrekt returnerer strengens længde, kan skrives således:
Dette er problemet for enhver funktion, der involverer manipulation af 32-bit Unicode-tegn. Derfor er det bedst at omskrive dem alle med udvidelsesoperatorer.
I ovenstående kode, hvis du ikke bruger extension-operatoren, er streng-reverseringsoperationen forkert.
(5) Objekter, der implementerer Iterator-grænsefladen
Ethvert objekt i Iterator-grænsefladen kan konverteres til et ægte array med en udvidelsesoperator.
I ovenstående kode returnerer querySelectorAll-metoden et nodeList-objekt. Det er ikke et array, men et array-lignende objekt. I dette tilfælde kan udvidelsesoperatoren omdanne det til et reelt array, fordi NodeList-objektet implementerer Iterator-interfacet. For de array-lignende objekter, der ikke har en Iterator-grænseflade installeret, kan udvidelsesoperatøren ikke omdanne dem til et rigtigt array.
I ovenstående kode er arrayLike et array-lignende objekt, men uden at implementere Iterator-interfacet vil udvidelsesoperatøren rapportere en fejl. I dette tilfælde kan du bruge Array.from-metoden til at konvertere arrayLike til et reelt array i stedet.
(6) Kort- og mængdestrukturer, generatorfunktioner
Udvidelsesoperatoren kalder internt Iterator-grænsefladen for datastrukturen, så ethvert objekt med Iterator-interface kan bruge en udvidelsesoperator, såsom en Map-struktur.
Når Generator-funktionen kører, returnerer den et traverserobjekt, så udvidelsesoperatorer også kan bruges.
I ovenstående kode er variablen go en Generator-funktion, og efter udførelse returnerer den et traverserobjekt, og udførelse af en udvidelsesoperator på dette traverseringsobjekt vil konvertere værdierne fra intern traversering til et array. Hvis du bruger en udvidelsesoperator til et objekt uden iteratorinterface, vil der blive rapporteret en fejl.
|