JavaScript Определение функции
Функции JavaScript определяются с помощью
function ключевого слова.
Вы можете использовать объявление функции или выражение функции.
Объявления функций
Ранее в этом руководстве вы узнали, что функции объявляются со следующим синтаксисом:
function functionName(parameters) {
// код для выполнения
}
Заявленные функции не выполняются сразу. Они "сохраняются для дальнейшего использования" и будут выполняться позже, когда они будут вызваны (вызвана).
Точки с запятой используются для разделения исполняемых заявлений JavaScript.
Поскольку объявление функции не является исполняемым оператором, не принято ставить точку с запятой в конце.
Функциональные выражения
Функцию JavaScript также можно определить с помощью выражения.
Выражение функции можно сохранить в переменной:
После того, как выражение функции было сохранено в переменной, переменную можно использовать как функцию:
Вышеупомянутая функция на самом деле является анонимной функцией (функцией без имени).
Функции, хранящиеся в переменных, не нуждаются в именах функций. Они всегда вызываются (вызывается) с использованием имени переменной.
Вышеупомянутая функция заканчивается точкой с запятой, потому что она является частью исполняемого заявления.
Конструктор Function()
Как вы видели в предыдущих примерах, функции JavaScript определяются с помощью
function ключевого слова.
Функции также можно определять с помощью встроенного конструктора функций JavaScript,
называемого Function().
Пример
var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
Попробуйте сами »
На самом деле вам не нужно использовать конструктор функции. Пример выше такой же, как и запись:
В большинстве случаев вы можете избегать использования new ключевого слова в JavaScript.
Функция подъема
Ранее в этом руководстве вы узнали о "подъеме" (Подъем JavaScript).
Подъем - это стандартное поведение JavaScript, заключающееся в перемещении объявлений в верхнюю часть текущей области.
Подъем применяется к объявлениям переменных и объявлениям функций.
По этой причине функции JavaScript могут быть вызваны до их объявления:
myFunction(5);
function myFunction(y) {
return y * y;
}
Функции, определенные с помощью выражения, не поднимаются.
Самовызывающиеся функции
Функциональные выражения можно сделать "самовызывающимися".
Самозванное выражение вызывается (запускается) автоматически, без вызова.
Функциональные выражения будут выполняться автоматически, если за выражением следует ().
Вы не можете самостоятельно вызывать объявление функции.
Вы должны заключить функцию в круглые скобки, чтобы указать, что это выражение функции:
Вышеупомянутая функция на самом деле является анонимной функцией с автоматическим запуском (функция без имени).
Функции можно использовать как значения
Функции JavaScript могут использоваться как значения:
Функции JavaScript можно использовать в выражениях:
Функции - это объекты
Оператор typeof в JavaScript возвращает "функции" для функций.
Но функции JavaScript лучше всего описывать как объекты.
Функции JavaScript имеют как свойства, так и методы.
Свойство arguments.length возвращает числа аргументов,
когда функция была вызвана:
Метод toString() возвращает функцию в виде строки:
Функция, определенная как свойство объекта, называется методом объекта.
Функция, предназначенная для создания новых объектов, называется конструктором объекта.
Стрелочные функции
Стрелочные функции позволяют использовать короткий синтаксис для написания функциональных выражений.
Вам не нужны function ключевое слово,
return ключевое слово и фигурные скобки.
Пример
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
Попробуйте сами »
Стрелочные функции не имеют своих this.
Они плохо подходят для определения методов объекта.
Стрелочные функции не поднимаются. Они должны быть определены перед использованием.
Использование const более безопасно,
чем использование var,
потому что выражение функции всегда является постоянным значением.
Вы можете опустить return ключевое слово и фигурные скобки,
только если функция является одним оператором.
Из-за этого может быть хорошей привычкой всегда держать их:
Стрелочные функции не поддерживаются в IE11 и более ранних версиях.
