De nos jours, tout le monde essaie d'utiliser ce type de fonctions d'ordre supérieur pour obtenir des résultats prometteurs en écrivant moins de code. Mais je me demande comment ces fonctions fonctionnent en interne.
Supposons que si j'écris quelque chose comme
var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]
Je sais que chaque élément du tableau «nombre» itère un par un, mais comment ?
J'ai essayé de le rechercher, mais je n'ai pas encore obtenu de réponse satisfaisante.
javascript
node.js
dictionary
higher-order-functions
Bilal Khan
la source
la source
map
qui a été ajoutée au type Array. Cette fonction prend une fonction comme paramètre qui est ensuite appelée lors de la boucle dans le tableau. Les valeurs de retour des appels de fonction sont ensuite renvoyées dans un tableau.Réponses:
.map
est juste une méthode qui accepte un rappel, appelle le rappel pour chaque élément du tableau et attribue la valeur à un nouveau tableau. Il n'y a rien de très spécial à ce sujet. Vous pouvez même l'implémenter vous-même assez facilement:Pour être entièrement conforme aux spécifications, vous devez également vérifier, entre autres, que l'
this
objet est un objet, qu'ilcallback
peut être appelé et au.call
rappel avec le deuxième paramètre transmismyMap
s'il en existe un, mais ce ne sont pas des détails important pour commencer à comprendre les fonctions d'ordre supérieur.la source
Je suppose que chaque fournisseur est censé l'implémenter selon les spécifications
L'implémentation réelle, par exemple V8 peut être un peu complexe, référez - vous à cette réponse pour commencer. Vous pouvez également référencer la source v8 dans github, mais il peut ne pas être facile de comprendre une seule partie isolément.
Cité de la réponse ci-dessus:
Spécifications ES2015:
"length"
)).la source
<li>
list-style-type
ne sont pas copiables dans Chrome ni FF. Avez-vous écrit les chiffres manuellement ou y a-t-il une meilleure méthode qui me manque?