«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему консоль JavaScript от Chrome показывает неожиданные результаты при оценке объектов?

Почему консоль JavaScript от Chrome показывает неожиданные результаты при оценке объектов?

Опубликовано в 2025-04-29
Просматривать:983

Why Does Chrome's JavaScript Console Show Unexpected Results When Evaluating Objects?

chrome's javascript console поведение: оценивать объекты Lazily

var s = ["hi"]; Консоль.log (ы); s [0] = "пока"; console.log (s);
var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
в Firefox, консоль выходов:

["hi"] ["bye"]
var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
, однако, в Chrome версии 7.0.517.41 бета, выход:

["bye"] ["bye"]
var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);

неожиданное поведение оценки

это поведение предполагает, что консоль Chrome может быть "ленивой" при оценке объектов. Когда выполняется первая оператор Console.Log, консоль ссылается на объект в памяти. Любые последующие модификации объекта, такие как изменение первого элемента с «hi» на «пока», не отражаются на выводе первой консоли. Это подразумевает, что консоль оценивает только объект во время первого оператора Console.log и хранит снимок.

Объяснение

это поведение задокументировано в следующем ошибке Webkit: https://bugs.webkit.org/show_bug. зафиксированный). Ошибка гласит, что консоль Chrome не выполняет ленивую оценку для объектов, доступных непосредственно, что приводит к наблюдаемому поведению.

обходной путь

. Это заставляет Chrome создавать представление объекта, который не изменяется в результате последующих изменений, гарантируя, что вывод консоли отражает текущее состояние объекта.

var s = ["hi"]; console.log (s.toString ()); s [0] = "пока"; console.log (s.toString ());
var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
output:

hi пока
            
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3