Объекты имеют более общую природу: они являются неупорядоченными наборами произвольных значений с доступом по ключу. Иначе говоря, вы обращаетесь к элементам по строковому имени (ключу или свойству) вместо числовой позиции (как в случае с массивами).
Мало какие возможности JS вызывают больше раздражения в сообществе JS, чем оператор ==, который обычно называют оператором свободного равенства. Как правило, этот оператор осуждается как плохо спроектированный и опасный/ненадежный в программах JS. Даже сам создатель языка Брендан Эйх жаловался, что он был спроектирован крайне неудачно.
Обратная совместимость означает, что если нечто принимается как допустимый код JS, то в будущем не могут произойти изменения, из-за которых этот код станет недопустимым. Код, написанный в 1995 году, каким бы примитивным или ограниченным он ни был, должен работать и в наши дни.
А теперь сравним обратную совместимость с ее двойником — прямой совместимостью. Прямая совместимость означает, что включение новой языковой возможности в программу не нарушит ее работоспособности, если она будет запущена в старом ядре JS. JS не обладает прямой совместимостью, хотя многие этого очень хотят и даже ошибочно верят в этот миф.
Обратная совместимость означает, что если нечто принимается как допустимый код JS, то в будущем не могут произойти изменения, из-за которых этот код станет недопустимым. Код, написанный в 1995 году, каким бы примитивным или ограниченным он ни был, должен работать и в наши дни. Как часто заявляют участники TC39, «мы не ломаем веб».
Всегда пишите код с использованием средств, эффективно передающих его намерения и идеи. Как правило, это означает использование самой последней стабильной версии JS. Старайтесь не ухудшать удобочитаемость кода, пытаясь вручную заполнять пропуски в синтаксисе/API. Для этого есть программы!
JS является реализацией стандарта ECMAScript (версии 2019 на момент написания книги), который разрабатывается под руководством комитета TC39 и проводится по инициативе ECMA. Он работает в браузерах и других средах JS (например, Node.js).
JS является многопарадигменным языком; это означает, что его синтаксис и возможности позволяют разработчику смешивать концепции (а также сгибать и придавать им новую форму) из разных общепризнанных парадигм, включая процедурное, объектно-ориентированное и функциональное программирование.
JS является компилируемым языком в том смысле, что инструменты (включая ядро JS) обрабатывают и проверяют код программы (выдавая сообщения о любых обнаруженных ошибках) перед ее выполнением.
Разобравшись с определением языка, начнем знакомство с его нюансами и хитростями