Наиболее типичный способ конструирования сложных выражений из более простых выражений заключается в использовании операторов. Операторы объединяют значения своих операндов (обычно двух) некоторым способом и вычисляют новое значение. Простейшим примером может служить оператор умножения *. Выражение х * у вычисляется как произведение значений выражений х и у. Иногда для простоты мы говорим, что оператор возвращает значение вместо «вычисляет» значение.
Эта глава описывает все операторы JavaScript, а также выражения (такие как индексирование массивов и вызов функций), в которых не используются операторы. Те, кто знаком с другими языками программирования, использующими С-подобный синтаксис, заметят, что в JavaScript выражения и операторы имеют похожий синтаксис.
4.1. Первичные выражения
Простейшие выражения, известные как первичные выражения, являются самостоятельными выражениями - они не включают более простых выражений.
Первичными выражениями в языке JavaScript являются константы, или литералы, некоторые ключевые слова и ссылки на переменные.
Литералы и константы встраиваются непосредственно в программный код. Они выглядят, как показано ниже:
1.23 // Числовой литерал
"hello" // Строковый литерал
/pattern/ // Литерал регулярного выражения
Синтаксис числовых литералов в JavaScript был описан в разделе 3.1.0 строковых литералах рассказывалось в разделе 3.2. Синтаксис литералов регулярных выражений был представлен в разделе 3.2.4 и подробно будет описываться в главе 10.
Ниже приводятся некоторые из зарезервированных слов JavaScript, являющихся первичными выражениями:
true // Возвращает логическое значение true
false // Возвращает логическое значение false
null // Возвращает значение null
this // Возвращает "текущий" объект
Мы познакомились со значениями true, false и null в разделах 3.3 и 3.4. В отличие от других ключевых слов, this не является константой - в разных местах программы оно может возвращать разные значения. Ключевое слово this используется в объектно-ориентированном программировании. Внутри метода this возвращает объект, относительно которого был вызван метод. Дополнительные сведения о ключевом слове this можно найти в разделе 4.5, в главе 8 (особенно в разделе 8.2.2) и в главе 9.
Наконец, третьим типом первичных выражений являются ссылки на переменные:
і // Возвращает значение переменной і
sum // Возвращает значение переменной sum
undefined // undefined - глобальная переменная, а не ключевое слово, как null
Когда в программе встречается идентификатор, интерпретатор JavaScript предполагает, что это имя переменной и пытается отыскать ее значение. Если переменной с таким именем не существует, возвращается значение undefined. Однако в строгом режиме, определяемом стандартом ECMAScript 5, попытка получить значение несуществующей переменной оканчивается исключением ReferenceError.
4.2. Инициализаторы объектов и массивов
Инициализаторы объектов и массивов - это выражения, значениями которых являются вновь созданные объекты и массивы. Эти выражения-инициализаторы иногда называют «литералами объектов» и «литералами массивов». Однако, в отличие от истинных литералов, они не являются первичными выражениями, потому что включают множество подвыражений, определяющих значения свойств и элементов. Инициализаторы массивов имеют более простой синтаксис, поэтому мы рассмотрим их в первую очередь.
Инициализатор массива - это список выражений, разделенных запятыми, заключенный в квадратные скобки. Значением инициализатора массива является вновь созданный массив. Элементы этого нового массива инициализируются значениями выражений из списка: