betydelse
Expansionsoperatorn (spreaden) är tre prickar (...) )。 Det är som inversen av en viloparameter, som förvandlar en array till en komma-separerad sekvens av parametrar.
Denna operator används främst för funktionsanrop.
I koden ovan, array.push(...) föremål) och lägga till(...) nummer), båda anrop till funktioner, och båda använder förlängningsoperatorer. Denna operator omvandlar en array till en sekvens av parametrar. Extensionsoperatorer kan användas i kombination med normalfunktionsparametrar, vilket är mycket flexibelt.
Tillämpa metoden för alternativa arrayer
Eftersom extensionsoperatorn kan expandera arrayen finns det inget behov av att använda apply-metoden för att omvandla arrayen till ett argument till funktionen.
Här är ett praktiskt exempel på en extensionsoperator som ersätter apply-metoden, och applicerar Math.max metod för att förenkla skrivandet av det största elementet i en array.
Ovanstående kod säger att eftersom JavaScript inte tillhandahåller en funktion för att hitta det största elementet i en array, kan du bara använda Math.max funktion för att omvandla arrayen till en sekvens av parametrar och sedan hitta det maximala värdet. Med förlängningsoperatören kan du använda Math.max direkt. Ett annat exempel är genom att lägga till en array på svansen av en annan array via push-funktionen.
I ES5-skrivmetoden i ovanstående kod kan parametrarna för push-metoden inte vara arrayer, så vi måste använda push-metoden flexibelt genom apply-metoden. Med extension-operatorn kan matrisen skickas direkt in i push-metoden. Här är ett annat exempel.
Utöka tillämpningen av operatorer
(1) Sammanfoga arrayer
Extensionoperatorn ger ett nytt sätt att skriva kombinationen av tal.
(2) kombinerat med dekonstruerad tilldelning
Extensionsoperatorer kan kombineras med dekonstruerade tilldelningar för att generera arrayer.
Om du använder extensionsoperatorn för array-tilldelning kan den bara placeras på sista siffran i parametern, annars rapporteras ett fel.
(3) Funktionens returvärde
JavaScript-funktioner kan bara returnera ett värde, och om flera värden behöver returneras, endast arrayer eller objekt. Extension-operatorer ger en lösning för att lösa detta problem.
Ovanstående kod tar en rad data från databasen, utökar operatorn och skickar den direkt till konstruktören Date.
(4) Sträng
Extensionsoperatorer kan också omvandla strängar till reella arrayer.
Ovanstående skrift har en viktig fördel, nämligen att den korrekt kan känna igen 32-bitars Unicode-tecken.
Det första sättet att skriva ovanstående kod är JavaScript, som känner igen 32-bitars Unicode-tecken som 2 tecken, och det finns inga problem med extensionsoperatorer. Så funktionen som korrekt returnerar strängens längd kan skrivas så här:
Detta är problemet för alla funktioner som involverar manipulation av 32-bitars Unicode-tecken. Därför är det bäst att skriva om dem alla med extensionsoperatorer.
I koden ovan, om du inte använder extension-operatorn, är strängomvändningsoperationen felaktig.
(5) Objekt som implementerar Iteratorgränssnittet
Vilket objekt som helst i Iterator-gränssnittet kan konverteras till en sann array med en extensionsoperator.
I koden ovan returnerar querySelectorAll-metoden ett nodeList-objekt. Det är inte en array, utan ett array-liknande objekt. I detta fall kan extensionsoperatorn omvandla det till en reell array eftersom objektet NodeList implementerar Iterator-gränssnittet. För de array-liknande objekt som inte har ett Iterator-gränssnitt kan tilläggsoperatören inte omvandla dem till en riktig array.
I koden ovan är arrayLike ett array-liknande objekt, men utan att distribuera Iterator-gränssnittet kommer tilläggsoperatören att rapportera ett fel. I det här fallet kan du använda metoden Array.from för att konvertera arrayLike till en verklig array istället.
(6) Mapp- och mängdstrukturer, generatorfunktioner
Extension-operatorn anropar internt Iterator-gränssnittet för datastrukturen, så att vilket objekt som helst med Iterator-gränssnitt kan använda en extension-operator, såsom en Map-struktur.
När generatorfunktionen körs returnerar den ett traverserobjekt, så extensionsoperatorer kan också användas.
I koden ovan är variabeln go en generatorfunktion, och efter exekvering returnerar den ett traverseringsobjekt, och om en extension operator på detta traverseringsobjekt exekveras kommer de värden som erhållits från intern traversering till en array. Om du använder en tilläggsoperator för ett objekt utan iteratorgränssnitt rapporteras ett fel.
|