Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 7794|Resposta: 0

[JavaScript] Operador de Extensão es6 Três pontos (...) )

[Copiar link]
Publicado em 19/06/2020 12:31:11 | | |
significado

O operador de expansão (spread) é três pontos (...) )。 É como o inverso de um parâmetro de descanso, transformando um array em uma sequência de parâmetros separados por vírgula.



Esse operador é usado principalmente para chamadas de funções.



No código acima, array.push(...) itens) e add(...) números), ambos são chamadas para funções, e ambos utilizam operadores de extensão. Esse operador transforma um array em uma sequência de parâmetros.
Operadores de extensão podem ser usados em combinação com parâmetros normais da função, o que é muito flexível.



Método de aplicação para arrays alternativos

Como o operador de extensão pode expandir o array, não há necessidade de usar o método apply para transformar o array em um argumento para a função.



Aqui está um exemplo prático de um operador de extensão substituindo o método apply, aplicando Math.max método para simplificar a escrita do maior elemento de um array.



O código acima diz que, como o JavaScript não fornece uma função para encontrar o maior elemento de um array, você só pode aplicar Math.max função para transformar o array em uma sequência de parâmetros e então encontrar o valor máximo. Com o operador de extensão, você pode usar Math.max diretamente.
Outro exemplo é adicionando um array à cauda de outro array via a função push.



No método de escrita ES5 do código acima, os parâmetros do método push não podem ser arrays, então precisamos usar o método push de forma flexível através do método apply. Com o operador de extensão, o array pode ser passado diretamente para o método push.
Aqui vai outro exemplo.



Ampliar a aplicação dos operadores

(1) Matrizes de fusão

O operador de extensão oferece uma nova forma de escrever a combinação de números.



(2) combinado com a atribuição desconstruída

Operadores de extensão podem ser combinados com atribuições desconstruídas para gerar arrays.



Se você usar o operador de extensão para atribuição de array, ele só pode ser colocado no último dígito do parâmetro, caso contrário, um erro será reportado.



(3) O valor de retorno da função

Funções JavaScript só podem retornar um valor e, se múltiplos valores precisarem ser retornados, apenas arrays ou objetos. Operadores de extensão oferecem uma solução alternativa para resolver esse problema.



O código acima pega uma linha de dados do banco de dados, estende o operador e o passa diretamente para o construtor Data.

(4) Corda

Operadores de extensão também podem transformar cadeias em arrays reais.



A escrita acima tem uma vantagem importante, que é que pode reconhecer corretamente caracteres Unicode de 32 bits.



A primeira forma de escrever o código acima é que o JavaScript reconhece caracteres Unicode de 32 bits como 2 caracteres, e não há problema com operadores de extensão. Assim, a função que retorna corretamente o comprimento da cadeia pode ser escrita assim:



Esse é o problema para qualquer função que envolva manipular caracteres Unicode de 32 bits. Portanto, é melhor reescrevê-los todos com operadores de extensão.



No código acima, se você não usar o operador de extensão, a operação de reversão de string está incorreta.

(5) Objetos que implementam a interface do Iterador

Qualquer objeto na interface do Iterador pode ser convertido em um verdadeiro array com um operador de extensão.



No código acima, o método querySelectorAll retorna um objeto nodeList. Não é um arranjo, mas um objeto semelhante a um array. Nesse caso, o operador de extensão pode transformá-lo em um array real porque o objeto NodeList implementa a interface Iterador.
Para aqueles objetos semelhantes a arrays que não possuem uma interface de iterador implantada, o operador de extensão não pode transformá-los em um array real.



No código acima, o arrayLike é um objeto semelhante a um array, mas sem implantar a interface Iterador, o operador de extensão reportará um erro. Nesse caso, você pode usar o método Array.from para converter arrayLike em um array real.

(6) Estruturas de mapeamento e conjunto, funções geradoras

O operador de extensão chama internamente a interface Iterador da estrutura de dados, então qualquer objeto com interface Iterador pode usar um operador de extensão, como uma estrutura Map.



Quando a função Geradora roda, ela retorna um objeto traverser, então operadores de extensão também podem ser usados.



No código acima, a variável go é uma função Geradora e, após a execução, retorna um objeto de travessão, e executar um operador de extensão nesse objeto de travessia converte os valores obtidos a partir de uma travessia interna em um array.
Se você usar um operador de extensão para um objeto sem interface iteradora, um erro será reportado.





Anterior:Implementação do Vue+ElementUI
Próximo:Problema com o lançamento do projeto Angular
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com