Консоль в некоторых браузерах использует ссылку на массив / объект, поэтому при ее проверке и изменении объекта после вызова console.log()
вы увидите измененный объект.
В Firefox это такжепроисходит для объектов, но не для массивов, которые все равно отображаются в строке:
>>> var a = [1,2,3]; console.log(a.push(4)); console.log(a); console.log(a.push(5));
4
[1, 2, 3, 4]
5
Специально для объектов, которые не содержат функций, быстрый обходной путь - это клонирование их (log $.extend({}, yourObject)
, если у вас есть jQuery) или ведение журналаих строковая версия JSON (тогда вы потеряете красивый вид объекта и просто получите простую строку).Массив можно легко клонировать (мелкое копирование!), Используя a.slice(0)