Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Например, нам нужно написать декорирующую функцию, которая будет считать количество вызовов какой-то функции. Это можно сделать весьма изящно с помощью NFE.
const count = f => function df() {
df.calls = (df.calls || 0) + 1;
return f(...arguments);
};
const foo = count(console.log);
foo.calls = 100;
...
export function foo() {}В примере с числами Фибоначчи. Если мы захотим перенести функцию в другую переменную, то есть:
let rf2 = rf;
rf = null;В случае с декларированием функции (FunctionDeclaration), мы получим ошибку. Так как внутри функция будет вызывать себя по старому имени. Такая защита.
Ну а сам FunctionExpression полезен например при условном объявлении функции, так как такая функция создается в процессе выполнения выражения:
let fe;
if (cond) {
fe = function() { /* 1 */ };
} else {
fe = function() { /* 2 */ };
}Это уже другая тема )
Красота НЕ-безымянных функций в JavaScript