При отладке кода в Google Chrome это было заметил, что console.log() ведет себя странно при работе с вложенными массивами. При регистрации массива изменение его внутреннего значения после регистрации приводило к тому, что записываемые выходные данные отражали обновленное значение, а не значение на момент регистрации. Такое поведение отсутствовало в Firefox.
Дальнейшее расследование показало, что несоответствие возникало, когда консоль Chrome была открыта во время загрузки. Когда консоль изначально закрывалась и открывалась после загрузки страницы, console.log() отображал фактические значения массива на момент регистрации.
После тщательного исследования было обнаружено, что такое поведение было признано ошибкой в Webkit. Однако исправление было реализовано в августе 2012 года и еще не выпущено в Google Chrome.
Разработчик Chromium прокомментировал ошибку, заявив, что клонирование объектов при консоли может не осуществимо. Кроме того, прослушивание изменений свойств объекта для поддержания точных значений было бы непрактично.
Текущая реализация console.log() позволяет избежать клонирования объектов при их отображении в консоли. Вместо этого во время регистрации создаются сокращенные предварительные просмотры, предоставляющие моментальный снимок свойств объекта. Это происходит только в том случае, если консоль уже открыта, что объясняет несоответствие поведения в зависимости от исходного состояния консоли.
Такое непоследовательное поведение в console.log() Google Chrome из-за реализации обработки объектов внутри консоли. Ожидаемое поведение должно сохраниться, поскольку предварительный просмотр отражает значения объекта на момент регистрации. Разработчики должны знать об этом поведении и по возможности использовать альтернативные методы отладки.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3