Dans le code suivant, je m'attendrais à ce qu'un tableau bidimensionnel soit produit, pré-rempli avec des zéros. Le problème que j'obtiens est que x[0][3] = 2
semble se produire trop rapidement, donc au moment du journal de la console à l'intérieur de la fonction, le tableau a déjà une valeur modifiée. Je n'arrive pas à y remédier, même avec des délais d'attente. Que se passe-t-il?Pourquoi ce tableau 2D génère-t-il des résultats inattendus?
function test(size) {
var row = [];
var return_me = [];
for (var i=0; i < size; i++) { row.push(0); }
for (var j=0; j < size; j++) { return_me.push(row.slice()); }
console.log("1:");
console.log(return_me);
return return_me;
}
var x = null;
console.log("0:");
console.log(x);
x = test(5);
console.log("2:");
console.log(x);
x[0][3] = 2;
console.log("3:");
console.log(x);
Le résultat inattendu est au « 1: » dans la sortie, où je reçois:
0: 0
1: 0
2: 0
3: 2
4: 0
Y a-t-il une _erreur_ réelle ou le journal semble-t-il inattendu? – Xufox
Quels sont les résultats du journal que vous trouvez inattendus? –
Désolé, c'était trompeur: il n'y a pas d'erreur. Je mets à jour la question avec plus de détails pour être plus clair. –