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