Console.log() показывает противоречивые значения для одного и того же объекта
Думаю, я сойду с ума.
Я использую console.log(), чтобы увидеть состояние объекта, а затем в следующей строке выполните console.log() для определенного свойства одного и того же объекта и получат разные значения для каждого.
Используемый код:
console.log(this.pictures.Items[pic].val);
for(var i in this.pictures.Items[pic].val) {
console.log("property: %s, value: %s", i, this.pictures.Items[pic].val[i] );
}
и выходы Firebug:
Picture { isLoaded=true, isSelected=false, img_src="imgs/image1.jpg", more...}
property: isLoaded, value: false
...more properties
как вы можете видеть, "isLoaded" имеет значение true при регистрации самого объекта, но false при регистрации свойства.
Я попробовал снова регистрировать объект после на всякий случай, и он снова верен.
Кто-нибудь знает, что здесь происходит?
Спасибо
Рич
Ответы
Ответ 1
Я не совсем уверен, что это то, что происходит с вами или нет, но console.log()
, похоже, имеет некоторые проблемы в некоторых браузерах, где выполняется console.log()
по значению или с помощью переменной индекса, которая изменяется или итерация в массиве не всегда работает должным образом.
Я предполагаю, что это имеет какое-то отношение к тому, что происходит между границами процесса и, возможно, задержка в фактической оценке выражения регистрации до тех пор, пока не изменится фактический объект или индекс, используемые или ссылки. Я видел эту проблему в Chrome точно - не знаю о Firefox.
Вы должны иметь возможность обойти эту конкретную проблему, используя строковую математику, чтобы построить финальную строку. Если только последняя строка передается на console.log()
, где все будет полностью оценено, то эта проблема не повлияет на вывод.