J'ai le problème suivant ci-dessous:
My Pour chaque P>
Écrivez une fonction myForeach qui accepte une matrice et une fonction de rappel. Le comportement de MyForeach doit refléter la fonctionnalité de la méthode de la matrice native .foreseach () aussi près que possible. p>
ci-dessous est le code: p> Le code ci-dessus fonctionne dans ce problème de fonction d'ordre supérieur, mais je ne comprends pas pourquoi. Spécifiquement, quelle est la ligne de code suivante signifie: p> Pourquoi y a-t-il 3 arguments? Et où sont passés ces arguments? p> p>
3 Réponses :
Lire ici à ce sujet. JavaScript ne se soucie pas du nombre de paramètres que vous passez. Par exemple, le code suivant fonctionne toujours mais des alertes p> non définis code> dans la fonction
addtosum code>:
let sum = 0;
function addToSum(num, i, k, j) {
sum += num;
console.log("i is:" + i);
console.log("k is:" + k);
console.log("j is:" + j);
}
let nums = [10, 20, 30];
function myForEach(anArray, callback) {
for (let i = 0; i < anArray.length; i++) {
let num = anArray[i];
//console.log(num)
// I don't understand what this line of code is doing...
callback(num);
}
return undefined
}
myForEach(nums, addToSum);
console.log(sum);
C'est une fonction de rappel:
let sum = 0; function addToSum(num) { sum += num; } let nums = [10, 20, 30]; function myForEach(anArray) { for (let i = 0; i < anArray.length; i++) { let num = anArray[i]; //console.log(num) // I don't understand what this line of code is doing... addToSum(num, i, anArray); } return undefined } myForEach(nums, addToSum); console.log(sum);
"aussi étroitement que possible" est une condition difficile. Les fonctions intégrées JavaScript sont très compliquées! Ce sont les étapes que la norme vous oblige à mettre en œuvre: p>
http: //www.ecma- international.org/ecma-262/7.0/#ssec-array.Prototype.foreach P>
En termes de layman, puisque JS est une langue très dynamique, lorsque vous concevez une fonction intégrée, vous ne pouvez pas simplement compter sur les paramètres d'étant ce que vous attendez qu'ils soient. En cas de et ainsi de suite. C'est pourquoi la mise en œuvre "aussi proche que possible" devrait faire beaucoup de vérifications de sécurité avant qu'elle ne commence à boucher et à appeler. p>
Vous pouvez trouver un exemple d'un monde réel foreach code>: p>
longueur code> ou sa longueur
code> pourrait ne pas être un nombre li>
foreach code> Polyfill sur la page MDN (regardez uniquement si vous avez décidé d'abandonner cela): P>
Callback code> est une référence à
addtosum code>, qui utilise uniquement le premier argument
num code> et ignore les deux suivants passés.
Il s'agit simplement de refléter exactement la méthode Native
FORECH CODE>. Le rappel à cela prend 3 arguments, la même chose qu'ici: l'élément, son index et la matrice elle-même: développeur.mozilla.org/en-us/docs/web/javascript/reference/...
Au fait, je ne sais pas si cela se trouve "tricherie", mais il ne serait-il pas beaucoup plus facile de simplement utiliser
MyForeach (Anarray, Callback, Thisarg) {anarray.foreach (rappel, cet objectif); } code>?