Функции
В JS функции по сути являются объектами.
Функции применяют для сокращения кода и упращения процесса программирования. Задаётся один раз и может многократно вызываться далее. Если в своём коде вы повторяете одинаковые куски кода много раз, то лучше вывести из в отдельную функцию (DRY).
Ф. не следует сильно перегружать логигой, они должны решаться конкретные повторяющиеся задачи (KISS).
Синтаксис
function name(parametr1, parament2, ..., paramentN) {
// function body (тело функции) хранит выполняемый код
return 'something';
}
// вызов функции
name();
Нейминг
Если переменная - это существительное, то переменная - это глагол, действие. Общее правило - в НАЗВАНИИ ФУНКЦИИ должен находитьтся глагол, описывающий то, что функция делает:
- get - возвращают значение
- calc - что-то вычисляют
- create - что-то создают
- show - что-то показывают
- check - что-то проверяют и возвращают логическое значение
Варианты записи
Классическая запись (Function declaration)
- Нужно именовать функцию.
- Вызывать такую функцию можно из любого места, даже до объявления (только при такой записи)
function summ(a, b) {
return a + b;
}
summ; // вернется код функции - ошибки не будет
summ(1, 2); // 3
// Будет ошибка - нужно имя
// SyntaxError: Function statements require a function name
function(a, b) {
return (a + b);
};
Запись через переменную (Function expression)
- При такой форме записи имя на себя берет переменная, а функцию уже именовать не нужно.
- ; в конце
- Вызывать можно только после объявления
const summ = function (a, b) {
return a + b;
};
summ(1, 2); // 3
Стрелочная запись (ES6 - Arrow function)
- Упрощенный синтаксис ES6 без ключевого слова function.
- Если запись идет в одну строчку, то ключевое слово return можно опустить
- Если параметр только один, то круглые скобки можно не вставлять
- Вызывать нужно только после объявления
// два параметра - скобки нужны
const summ = (a, b) => a + b;
summ(1, 2); // 3
// один параметр - скобки не нужны
const greeting = name => console.log(`Hello, ${name}!`);
greeting('John'); // 'Hello, John!'