Atualmente, todo mundo tenta usar esse tipo de funções de ordem superior para obter resultados promissores ao escrever menos código. Mas eu me pergunto como essas funções funcionam internamente.
Suponha que se eu escrever algo como
var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]
Eu sei que cada elemento da matriz 'number' está repetindo um por um, mas como ?
Tentei procurá-lo, mas ainda não obtive resposta satisfatória.
javascript
node.js
dictionary
higher-order-functions
Bilal Khan
fonte
fonte
map
que foi adicionada ao tipo Array. Esta função assume uma função como um parâmetro que é chamado durante o loop pelo array. Os valores de retorno das chamadas de função são retornados em uma matriz.Respostas:
.map
é apenas um método que aceita um retorno de chamada, chama o retorno de chamada para cada item da matriz e atribui o valor a uma nova matriz. Não há nada de muito especial nisso. Você pode até implementá-lo facilmente:Para ser totalmente compatível com as especificações, você também precisa verificar, entre outras coisas, se o
this
objetocallback
é passível de chamada e.call
o retorno de chamada com o segundo parâmetro passado paramyMap
se houver um, mas esses detalhes não são importante para o entendimento inicial das funções de ordem superior.fonte
Eu acho que todo fornecedor deve implementá-lo de acordo com as especificações
A implementação real, por exemplo, a V8 pode ser um pouco complexa, consulte esta resposta para começar. Você também pode consultar a fonte v8 no github, mas pode não ser fácil entender apenas uma parte isoladamente.
Citado da resposta acima:
Especificação do ES2015:
"length"
)).fonte
<li>
list-style-type
não são copiáveis no Chrome nem no FF. Você escreveu os números manualmente, ou está faltando um método melhor?