Книга: JavaScript. Подробное руководство, 6-е издание
4.5. Выражения вызова
4.5. Выражения вызова
Выражение вызова в языке JavaScript служит для вызова (или выполнения) функции или метода. Оно начинается с выражения, возвращающего функцию, идентифицирующего вызываемую функцию. Вслед за выражением получения функции следуют открывающая круглая скобка, список из нуля или более выражений аргументов, разделенных запятыми, и закрывающая круглая скобка. Например:
f(0) // f - выражение функции; 0 - выражение аргумента.
Math.max(x,у,z) // Math.max - функция; x, у и z - аргументы.
a.sort() // a.sort - функция; здесь нет аргументов.
При вычислении выражения вызова первым вычисляется выражение, возвращающее функцию, а затем вычисляются выражения аргументов и создается список значений аргументов. Если значением выражения, возвращающего функцию, не является вызываемый объект, возбуждается исключение ТуреЕггог
. (Все функции являются вызываемыми объектами. Объекты среды выполнения также могут быть вызываемыми, даже если они не являются функциями. Это отличие рассматривается в разделе 8.7.7.) Далее значения аргументов присваиваются в порядке их следования именам параметров, которые указаны в определении функции, после чего выполняется тело функции. Если внутри функции используется инструкция return
, возвращающая некоторое значение, это значение становится значением выражения вызова. В противном случае выражение вызова возвращает значение undefined
. Полное описание механизма вызова функций, включая описание того, что происходит, когда количество выражений аргументов не совпадает с количеством параметров в определении функции, вы найдете в главе 8.
Все выражения вызова включают пару круглых скобок и выражение перед открывающей круглой скобкой. Если это выражение является выражением обращения к свойству, такой вызов называется вызовом метода. При вызове метода объект или массив, к свойству которого производится обращение, становится значением параметра this, доступного в теле функции во время его выполнения. Это обеспечивает поддержку парадигмы объектно-ориентированного программирования, согласно которой функции (в ООП обычно называются «методами») получают возможность манипулировать объектом, частью которого они являются. Подробности приводятся в главе 9.
ECMAScript 5, если функция определяется в строгом режиме, при вызове она получает в ключевом слове this
не глобальный объект, а значение undefined
. Подробнее о строгом режиме рассказывается в разделе 5.7.3.
- 4.1. Первичные выражения
- 4.2. Инициализаторы объектов и массивов
- 4.3. Выражения определений функций
- 4.4. Выражения обращения к свойствам
- 4.5. Выражения вызова
- 4.6. Выражения создания объектов
- 4.7. Обзор операторов
- 4.8. Арифметические выражения
- 4.9. Выражения отношений
- 4.10. Логические выражения
- 4.11. Выражения присваивания
- 4.12. Вычисление выражений
- 4.13. Прочие операторы
- Выражения
- 4 Выражения и операторы
- 4.6. Выражения создания объектов
- Индексы по выражениям
- Выражения в значениях по умолчанию для доменов
- Выражения в EXCEPTION
- 6. Выражения реляционной алгебры
- Определение необходимого системного вызова
- 3.13.7. Рекурсия в регулярных выражениях
- 6. Лекция: Обработка текстов. Регулярные выражения. Unicode.
- Применение лямбда-выражения в качестве задачи
- 4.2.2. Возвращаясь к строкам и регулярным выражениям