Bonjour à tous,
Lors d'une interview un developer m'a demandé de fix un algorithme, n'ayant pas su résoudre , il m'a ensuite démontré les deux méthodes pour la résoudre. Mais je n'ai pas bien compris pourquoi ces méthodes marchaient et qu'est ce qu'elles résolvaient.
Pourriez-vous m'aider?
Voici l'algo de base :
var arr = [12, 10, 2];
for(var j = 0; j < arr.length; j++){
setTimeout(function(){
console.log('el ' + j + " / index : " + arr[j]);
}, 3000)
}
Ce message va afficher
"el 3 / index : undefined"
"el 3 / index : undefined"
"el 3 / index : undefined"
Alors qu'il devrait afficher :
"el 0 / index : 12"
"el 1 / index : 10"
"el 2 / index : 2"
Voici les deux manières dont il a résolu l'exercice
1ère manière via une self-Invoking function
var arr = [12, 10, 2];
for(var i = 0; i < arr.length; i++ ){
setTimeout((() => {
console.log('el ' + i + " / index : " + arr[i]);
})(), 3000)
}
Deuxième manière via l'instruction de variable "let"
var arr = [12, 10, 2];
for(let i = 0; i < arr.length; i++){
setTimeout(function(){
console.log('el ' + i + " / index : " + arr[i]);
}, 3000)
}
Si quelqu'un sait me donner des explications ce serait top :)
Merci d'avance..