0

let div = document.querySelector('div');
div.innerHTML = 'raz';
console.log(div);
div.innerHTML = 'dva';
console.log(div);
<div></div>

Почему в консоли два раза выводится 'dva'. А не 'raz' и следом 'dva'.


console Проверил в трех браузерах. Везде такой вывод.

Grundy
  • 81,538
forzeeh
  • 165

2 Answers2

2

Пожалуйста, обратите внимание, что если вы логируете объекты в последних версиях Chrome и Firefox, то что вы вывели в консоль, является ссылкой на объект, и не обязательно является его "значением" на момент вызова console.log()

https://developer.mozilla.org/ru/docs/Web/API/Console/log

teran
  • 29,377
  • иначе говоря, сериализуйте представление объекта перед выводом, если хотите увидеть состояние на момент вызова – teran Jan 09 '21 at 23:25
1

Есть ответ на английском на схожий вопрос.

Не факт, что синхронность консоли гарантирована в этом случае. Скорее всего на момент когда консоль выводит на экран первый раз, div уже имеет второй текст. Если вы именно div.innerHTML напишите, то будет верно, потому что выводится текст, а не представление дива. Такое же поведение может быть во многих местах консоли, когда вы выводите объекты вместо примитивов.