significado
El operador de expansión (spread) es de tres puntos (...) )。 Es como el inverso de un parámetro de reposo, convirtiendo un array en una secuencia de parámetros separada por comas.
Este operador se utiliza principalmente para llamadas a funciones.
En el código anterior, array.push(...) ítems) y add(...) números), ambos son llamadas a funciones, y ambos utilizan operadores de extensión. Este operador convierte un array en una secuencia de parámetros. Los operadores de extensión pueden usarse en combinación con parámetros de función normal, lo cual es muy flexible.
Método de aplicación para matrices alternativas
Dado que el operador de extensión puede expandir el array, no es necesario usar el método apply para convertir el array en un argumento de la función.
Aquí tienes un ejemplo práctico de un operador de extensión que reemplaza el método apply, aplicando Math.max método para simplificar la escritura del elemento más grande de un array.
El código anterior dice que, dado que JavaScript no proporciona una función para encontrar el elemento más grande de un array, solo puedes aplicar Math.max función para convertir el array en una secuencia de parámetros y luego encontrar el valor máximo. Con el operador de extensión, puedes usar Math.max directamente. Otro ejemplo es añadiendo un array a la cola de otro array mediante la función push.
En el método de escritura ES5 del código anterior, los parámetros del método push no pueden ser arrays, por lo que tenemos que usar el método push de forma flexible a través del método apply. Con el operador de extensión, el array puede pasarse directamente al método push. Aquí tienes otro ejemplo.
Ampliar la aplicación de operadores
(1) Matrices de fusión
El operador de extensión proporciona una nueva forma de escribir la combinación de números.
(2) combinado con asignación deconstruida
Los operadores de extensión pueden combinarse con asignaciones deconstruidas para generar arrays.
Si usas el operador de extensión para asignar el array, solo puede colocarse en el último dígito del parámetro, de lo contrario se reportará un error.
(3) El valor de retorno de la función
Las funciones JavaScript solo pueden devolver un valor y, si es necesario devolver varios valores, solo arrays u objetos. Los operadores de extensión ofrecen una solución alternativa para resolver este problema.
El código anterior toma una línea de datos de la base de datos, extiende el operador y la pasa directamente al constructor Fecha.
(4) Cuerda
Los operadores de extensión también pueden convertir cadenas en matrices reales.
La escritura anterior tiene una ventaja importante, es decir, puede reconocer correctamente caracteres Unicode de 32 bits.
La primera forma de escribir el código anterior, JavaScript reconoce los caracteres Unicode de 32 bits como 2 caracteres, y no hay problema con los operadores de extensión. Así que la función que devuelve correctamente la longitud de la cadena puede escribirse así:
Este es el problema para cualquier función que implique manipular caracteres Unicode de 32 bits. Por lo tanto, es mejor reescribirlos todos con operadores de extension.
En el código anterior, si no usas el operador de extensión, la operación de inversión de cadenas es incorrecta.
(5) Objetos que implementan la interfaz Iterador
Cualquier objeto en la interfaz del Iterador puede convertirse en un verdadero array con un operador de extensión.
En el código anterior, el método querySelectorAll devuelve un objeto nodeList. No es un arreglo, sino un objeto similar a un arreglo. En este caso, el operador de extensión puede convertirlo en un array real porque el objeto NodeList implementa la interfaz Iterador. Para aquellos objetos tipo array que no tienen una interfaz de iterador desplegada, el operador de extensión no puede convertirlos en un array real.
En el código anterior, ArrayLike es un objeto similar a un array, pero sin desplegar la interfaz Iterador, el operador de extensión informará de un error. En este caso, puedes usar el método Array.from para convertir arrayLike en un array real en su lugar.
(6) Estructuras de aplicación y conjunto, funciones generadoras
El operador de extensión llama internamente a la interfaz Iterador de la estructura de datos, por lo que cualquier objeto con una interfaz Iterador puede usar un operador de extensión, como una estructura de Mapa.
Cuando la función Generador se ejecuta, devuelve un objeto traverser, por lo que también se pueden usar operadores de extensión.
En el código anterior, la variable go es una función generadora y, tras su ejecución, devuelve un objeto de recorrido, y ejecutar un operador de extensión sobre este objeto de recorrido convertirá los valores obtenidos de la travesía interna en un array. Si usas un operador de extensión para un objeto sin interfaz iteradora, se reportará un error.
|