console.log()
имеет некоторые забавные модели поведения в некоторых браузерах (я видел его в Chrome), что, вероятно, связано с тем, что сама консоль находится в другом процессе и данных должен получить выстроил через границу процесса в фоновом режиме (так что это не делается синхронно с вашим исполнением Javascript).
Оказывается, что когда вы делаете что-то вроде console.log(y);
и y
является объектом, что сразу запоминаются для консоли является ссылкой на y
, а затем где-то чуть позже, фактическое содержание y
извлекаются и отображаются. Но, если в то же время ваш Javascript изменил y
, то вы не обязательно получите точное значение для y
, отображаемое в консоли.
Вы можете работать вокруг этого вопроса, делая это:
console.log(JSON.stringify(y));
И, на самом деле вы можете проверить свой код, изменяя оба ваших console.log()
заявления к этому.
Консоль всегда показывает текущее состояние объекта, оно не фиксирует состояние, как оно было при регистрации. Поместите «отладчик» после первого журнала, чтобы увидеть разницу. –