Неправильно работает console.log() в google chrome

344
07 августа 2017, 13:36

Простейший пример прикреплен. Вот результат его работы:

Консоль сразу после инициализации пустого массива пишет, что там есть элемент. Но если выводить напрямую длинну массива - выводит 0.

Еще вчера вроде было все нормально. Комп перезагружал. Как пофиксить?

Chrome 60.0.3112.90. OS X 10.11.6

const arr =[]; 
console.log(arr); 
console.log(arr.length); 
arr.push(0); 
console.log(arr);

Answer 1

Это не баг. В arr передается ссылка на массив, поэтому когда вы нажимаете на стрелку в консоли система проходит по ссылке на массив и отображается текущие состояние массива. Поэтому о промежуточных состояниях массива можно судить только по текстовым меткам, либо можно создавать копии текущего состояния массива при вывод в консоль с помощью arr.slice(""). А console.log(arr.length) вы выводите до момента добавления элемента, вот он и выдает 0. Вот вам пример:

const arr =[]; 
console.log("Обычный вывод:",arr); 
console.log("Slice вывод:",arr.slice("")); 
arr.push(0); 
console.log("Обычный вывод:",arr); 
console.log("Slice вывод:",arr.slice("")); 
arr.push(1); 
arr.push(2);

READ ALSO
react не рендерит элемент в html

react не рендерит элемент в html

все постарался изложить в одном скриншоте: Ошибки в консоли нетjsx код:

375
SQLITE3 Select запросы

SQLITE3 Select запросы

Всем Привет

328
tinymce Не работает ввод текста

tinymce Не работает ввод текста

ЗдравствуйтеПодключила редактор tinymce

419
Почему мой цикл for … in не работает правильно?

Почему мой цикл for … in не работает правильно?

Я уже несколько часов ломаю себе голову, не могу понять почему мой код не работает правильноВ общем моя цель чтобы при клике на главной странице,...

378