Functions Flashcards
Function expression
Функциональное выражение.
Ключевое слово function может использоваться для определения функции внутри выражения.
var myFunction = function name {
statements
};
Имя функции может быть опущено для создания анонимных функций.
Функциональное выражение может быть использовано для создания самовызывающейся функции IIFE (Immediately Invoked Function Expression), которая исполняется сразу же после того, как она была определена.
Функциональные выражение не всплывают. Вы не можете использовать их до их определения.
Для рекурсии необходимо создать именованное функциональное выражение.
Function declaration
Объявление функции определяет функцию с указанными аргументами.
function name([param,[, param,[…, param]]]) {
[statements]
}
Является объектом Function и обладает всеми свойствами, методами и поведением объектов такого типа.
По умолчанию функции возвращают undefined. Чтобы вернуть другое значение, функция должна содержать инструкцию return, которая указывает, какое значение возвращать.
Объявление функции в JS поднимает определение функции. Функцию можно использовать до ее объявления.
Arrow function
let func = (arg1, arg2, …argN) => expression;
Если аргумент в функции только один, то круглые скобки вокруг него можно опустить.
Если аргументов нет, то круглые скобки пустые, но обязательно присутствуют.
Если функция многостаночная - заключаем тело в {…} и добавляем return.
Peculiarities of arrow functions
- У стрелочных функций нет своего this. Если мы обращаемся к this, то берем его из наружного контекста. Это удобно использовать, например, для итерации внутри метода объекта.
- Стрелочные функции не могут быть использованы как конструкторы. Они не могут быть вызваны с new.
- У стрелочных функций также нет переменной arguments.
- У стрелочных функций нет super. При обращении к super стрелочной функции он берётся из внешней функции.