Я не понимаю, почему console.log
показывает, что d1
содержит [100,200,300]
, прежде чем я даже представил эти цифры. Обычный for loop
отображает внутренности d1
правильно. Может ли кто-нибудь объяснить это поведение/ошибку console.log
в Google Chrome? https://jsfiddle.net/ZSvyt/Почему console.log отображает значения неправильного объекта?
var container = {};
container["0"] = [10, 20, 30];
var d1 = container;
console.log('before console.log');
console.log(d1); // <--- IT DISPLAYS [100, 200, 300]. WHY?
// before for loop
console.log('before for loop');
for (var i = 0; i < d1["0"].length; i++) {
console.log(d1["0"][i]);
}
container["0"] = [100, 200, 300];
console.log('after console.log');
console.log(d1);
// after for loop
console.log('after for loop');
for (var i = 0; i < d1["0"].length; i++) {
console.log(d1["0"][i]);
}
Выход:
before console.log
Object {
0: Array[3]
}
0: Array[3]
0: 100
1: 200
2: 300
before for loop
10
20
30
after console.log
Object {
0: Array[3]
}
0: Array[3]
0: 100
1: 200
2: 300
after for loop
100
200
300
Это иногда происходит с вложенными _Objects_, потому что поиск консоли может произойти после изменения ссылки. Если это важно, то используйте _JSON_ –