javascript-tutorial-ru
javascript-tutorial-ru copied to clipboard
{} + {} выдаёт разные ответы в консолях ff и chromium :)
Смотрю низ 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 (запихнув в тело функции)
PR please ;) Желательно к англ версии.