Консоль отображает у объекта новое значение ключа раньше, чем ключ получает это значение
1,00
р.
р.
Написал простой пример с изменением объекта в функции при передаче по ссылке. https://plnkr.co/edit/kR9zRc0Y... var salaries = { "Вася": 100, "Петя": 300, "Даша": 250 } function changeObject(object) { for (var key in object) { object[key] += 100 } } console.log(salaries) changeObject(salaries) console.log(salaries) В итоге результат: Object {Вася: 100, Петя: 300, Даша: 250} Object {Вася: 200, Петя: 400, Даша: 350} Передача по ссылке происходит, но console.log() отрабатывает не так как ожидается, как будто Chrome (Version 49.0.2623.110 (64-bit)) фиксирует состояние объекта на момент console.log(), хотя вроде должен ссылаться на один и тот же измененный объект. Кто знает в чем может быть дело?
Ответ Суть заключается в том, как работает консоль в хроме. И конкретно, функция log. Она выводит значение объекта в момент вывода, при этом, если для вывода всех свойств требуется много места, появляется возможность развернуть объект.
При этом можно заметить, что в свернутом виде будет показываться информация актуальная на момент вывода, но если развернуть
будет показано состояния объекта на момент разворачивания. Чтобы избежать такой неоднозначности, можно использовать console.dir