Ошибка консоли Chrome?

1

Этот вопрос не вызывает никаких сомнений или проблем. По-видимому, кажется, что я наткнулся на ошибку, возможно, на хром-консоли,

Я использую этот код:

console.log("Before: ", this.selectedScorecard.scorecard_attributes);
let attribute = this.selectedScorecard.scorecard_attributes.find(item => item.id === null || item.id === undefined)

if(attribute) {
   let length = this.selectedScorecard.scorecard_attributes.length;
   this.selectedScorecard.scorecard_attributes.splice(length-1, 1);
   console.log("After: ", this.selectedScorecard.scorecard_attributes);
}

Хорошо, поэтому атрибут представляет собой массив, и он сначала представляет собой массив длиной 2. Теперь я соединяю один элемент из массива и печатаю его значение до и после сращивания.

В хром-консоли в фрагменте перед массивом он показывает (2), указывающий длину как 2, но в самом массиве он показывает длину как 1, а также только один элемент в "Перед консолью массива", в то время как все очевидно, как ожидаемый в "После консоли" я прикрепляю изображение для лучшего понимания Изображение 174551

Мне любопытно, кто-нибудь об этом знает? Кто-нибудь сталкивается с этим раньше или я только тот, кто его замечает?

  • 2
    вам нужно глубоко скопировать объект, если вы не хотите, чтобы он был изменен.
  • 0
    Чтобы обойти это: console.log("Before: ", JSON.parse(JSON.stringify(this.selectedScorecard.scorecard_attributes)));
Показать ещё 2 комментария
Теги:
ecmascript-6
google-chrome-devtools
web-inspector

1 ответ

4
Лучший ответ

Когда console.log запускается, хром синхронно выводит сводку о том, что там. Массив имеет 2 элемента, поэтому сводные журналы a (2). Chrome сохраняет ссылку на массив, если позже вы решите, что хотите увидеть больше данных, но он не клонирует весь массив.

Позже, когда вы нажимаете, чтобы развернуть массив, он показывает более подробную информацию, но он показывает его на основе того, как он выглядит, когда вы его расширяете, а не когда изначально выполнялся оператор журнала. Так как он имеет только один элемент, это то, что он отображает.

  • 1
    Кроме того, я бы добавил, что для обхода объектов в журнале в том виде, в котором они находятся в данный момент, достаточно просто использовать console.log( JSON.stringify( obj ) )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню