javascript-tutorial-ru icon indicating copy to clipboard operation
javascript-tutorial-ru copied to clipboard

{} + {} выдаёт разные ответы в консолях ff и chromium :)

Open safinaskar opened this issue 8 years ago • 1 comments

Смотрю низ http://learn.javascript.ru/object-conversion . Там, где написано "Заметим, для полноты картины, что некоторые тесты знаний в интернет предлагают вопросы типа: {}[0] // чему равно?" и так далее. Так вот, с точки зрения "настоящего Javascript", описано в ECMA spec, и реализованного в браузерах при выполнении ими СКРИПТОВ, вы написали всё верно. Надеюсь, что ваши тесты на http://learn.javascript.ru/quiz тоже правильные. Но вот при запуске этих примеров в консолях браузеров эти самые консоли иногда ведут себя не как "настоящий js", а применяют специальные хаки, чтобы {} в начале строки воспринималось как пустой объект.

В частности, консоль FF (Firefox ESR 52.2.0 на Debian) в ответ на {} + {} выдаёт NaN (первый {} воспринимается как блок кода), как и полагается по ECMA spec, как и написано у вас, и как и реализовано во всех браузерах при обработке скриптов. Но вот консоль Chromium (59.0.3071.86 на Debian) выдаёт "[object Object][object Object]". Node.js v7.10.0 выдаёт почти такой же ответ: '[object Object][object Object]'.

Так вот, хорошо бы тут предупредить об этом читателей. Мол, на консоли браузеров в этом вопросе полагаться нельзя. Как минимум (если хочется воспользоваться консолью) нужно принудить код выполняться как выражение (запихнув в круглые скобки), ну или как statement (запихнув в тело функции)

safinaskar avatar Aug 07 '17 19:08 safinaskar

PR please ;) Желательно к англ версии.

iliakan avatar Jun 05 '18 16:06 iliakan