01.ii Function Expression
Function Expression - объявление функции в контексте какого-либо выражения, например присваивания.
// Function Declaration
function sum(a, b) {
return a + b;
}
// Function Expression
const sum = function(a, b) {
return a + b;
};
// Arrow funciton
const sum = (a, b) => a + b;
Основные особенности:
функция всегда находится в зоне выражения;
имеет опциональное имя;
не воздействует на объект переменных;
и создается на этапе интерпретации кода контекста.
такую функцию нельзя вызвать до того, как интерпретатор дойдет до выполнения выражения
Специально для работы с рекурсией в JavaScript существует особое расширение функциональных выражений, которое называется Named Function Expression (сокращённо NFE
) или «именованное функциональное выражение». Особенность NFE
в том, что она может рекурсивно вызывать себя по своему локальному имени:
const func = function sayHi(...) {
/* тело функции */
return 1 + sayHi(...)
};
Предпочитайте использовать NFE
:
Легче читать сообщения об ошибке.
Легче отлаживать
Имя функции позволяет понять что она делает
Можно делать рекурсивные вызовы этой функции
В отличие от function declaration, function expression всегда находится в зоне выражения:
// в скобках (оператор группировки) может быть только выражение
(function foo() {});
// в инициализаторе массива - всегда выражение
[function bar() {}];
// запятая также оперирует выражениями
1, function alsoFE() {};
Last updated
Was this helpful?