Je pose cette question à nouveau car l'utilisateur Cerbrus a marqué le previous question comme un doublon de this question. Quelqu'un peut-il être si gentil de me montrer comment la question indiquée par cet utilisateur, devrait résoudre le code ci-dessous? Je ne peux pas trouver une correspondance entre ces situations (même si elles sont similaires). Je dois transmettre une variable à une fonction dans une boucle for. Voici un exemple:jQuery: passage de la variable à la fonction déclarée à l'intérieur de la boucle [contestant le doublon]
var mainObj = [],
subArr = ['val1', 'val2'],
tmp;
for (var i = 0; i < subArr.length; i++) {
tmp = subArr[i];
mainObj.push({
key: function(varsFromLibrary) {
myFunc(tmp);
}
});
}
Ici, j'ai 2 problèmes:
- pourquoi dois-je attribuer à
subArr[i]
tmp
? En utilisantmyFunc(subArr[i])
retournera quei
est indéfini? - pourquoi dans
myFunc
je reçois seulement la dernière valeur desubArr
tableau?
MISE À JOUR
J'ai mis à jour le code comme suit mais je reçois TypeError: funcs[j] is not a function
var mainObj = [],
subArr = ['val1', 'val2'],
tmp,
funcs = [];
function createfunc(i) {
return function() { console.log("My value: " + i); };
}
for (var i = 0; i < subArr.length; i++) {
funcs[i] = createfunc(subArr[i]);
}
for (var j = 0; j < subArr.length; j++) {
tmp = subArr[i];
mainObj.push({
key: function(varsFromLibrary) {
funcs[j]();
}
});
}
Merci beaucoup Jonas, très complet! J'aimerais avoir votre réponse très utile dès le début! :) – Mark