Непонятное поведение - console.log
Добрый вечер.
Обнаружил непонятное поведение функции console.log (или декримента?). Есть код следующего вида: var x = [0, 1, 1, 0]; console.log(x); x[1]--; console.log(x); По какой-то причине Хром (и новая опера) выводят в консоль оба раза [0, 0, 1, 0]. И только 10й IE выводит ожидаемый результат - сначала [0, 1, 1, 0], а потом [0, 0, 1, 0]. В других браузерах, кроме этих трёх, не проверял. Почему так происходит? |
Вложений: 1
Цитата:
|
Оно не только его... :D
|
Это прекрасно, но ведь и я не из головы это взял - точно так же привёл скриншот, сделанный буквально только что. Кто может объяснить такую аномалию?
|
Это происходит потому что консоль вебкитов кэширует обьект отображаемый в консоли и не перерисовывает его в реальном времени. ВИДИМО. можешь попробовать алертом и все будет работать, можешь попробовать выводить приметив console.log(x[1]) и все будет работать. такая вот особенность консоли в хроме, и ДА, она всех бесит
|
Maxmaxmaximus3,
Спасибо. Я голову сломал, почему console.log выводит массив с нулём, а следующей строчкой элемент этого массива равным единице. Вот такой вот весёлый дебаггинг... |
breakpoint-ы тебя спасут
|
Цитата:
|
Цитата:
|
Это происходит потому, что console.log возвращает ссылку и некоторые отладчики отображают всегда реальное состояние объекта по этой ссылке (т.к. отображение происходит после изменений данных), а там где отображение идёт последовательно (например в Фаербаге, то более ожидаемый результат). Если же "развернуть" ссылку которую даёт отладчик, то везде конечно же будет актуальное состояние объекта.
Это не баг, и не фича, по идеи console.log так и должен работать, т.е. он просто выводит в консоль ссылку или элементарное значение, а то, что в ФФ или ИЕ он ещё и показывает некоторое состояние на момент вызова - это просто сделано ради удобства. |
Цитата:
|
Цитата:
Цитата:
Цитата:
Можете оспорить кто сможет, я уже сказал как. Цитата:
|
Цитата:
Цитата:
UPD: похоже нормально Console API так и не стандартизировали. Но для FF console.dir помог бы. В общем универсальный молоток: console.log(...); debugger; // точка останова |
Цитата:
Цитата:
ну, собственно вот http://habrahabr.ru/post/76485/ я думал это только в ноде работает |
Цитата:
Цитата:
|
в принципе кому надо может переопределить и не парится, но лучше бы это было из коробки как в лисе.
Цитата:
|
Цитата:
|
эм.... ну ладно, но для меня вообще нет ничего холи. по этому мне трудно определять. наверное по этому вы угляживаете троллинг в моих словах где то =)для меня нет ни чо такого в том чтобы сравнить браузеры... буду знать что есть те для кого это больная тема. сори.
|
Цитата:
Мне больше нравится рендер SVG в Chrome, нежели в ФФ, но гораздо больше нравится рендер шрифтов в ФФ, нежели в Хроме (кто подключал символьные шрифты в Хроме, то наверняка прибегал к хаку подключения SVG шрифтов чтобы не было смазывания). Мне нравится, что открыв консоль ФФ я уже могу трениться со многими новыми фичами вроде деструкторизаций или Arrow Function, а в хроме мало того что нужно включить флаг (ну да ладно), так ещё и поддержка новых фишек реально хуже (так например недавно пришлось писать полифил для canvas.toBlob для хрома, а в ИЕ и ФФ было). А отладчик мне ваще больше нравится в ИЕ11:) Если сравнивать производительность VM JS, то утверждение, что "V8 самый быстрый зверь" уже миф, в большинстве случаев они примерно одинаковы, но слабые или сильные стороны есть у всех. В ФФ объективно тормозит старичок Гекко, но Мозиловцы уже неск лет пилят ему замену, а пока реально от версии к версии улучшают работу. Ваще если взять средне арифметическое от качеств любого топового браузера, то результат будет примерно одинаков, поэтому я и не вижу смысла переходить, тем более что я уже "прирос" к ФФ и не хочу менять привычки. |
kobezzza, даже слова поперек сказать не могу.
|
Часовой пояс GMT +3, время: 22:54. |