Функция в JavaScript — это блок кода, который выполняет определенную задачу и может быть повторно использован. Функции помогают структурировать код, избегать дублирования и делать программу более читаемой.
Типы функций и способы их создания
1. Function Declaration (Объявление функции)
Самый распространенный способ. Функция объявляется с помощью ключевого слова function.
// Синтаксис
function имяФункции(параметры) {
// тело функции
return результат; // необязательно
}
// Пример
function greet(name) {
return "Привет, " + name + "!";
}
console.log(greet("Анна")); // "Привет, Анна!"Особенности:
- Можно вызывать до объявления
- Имеют собственный контекст this
2. Function Expression (Функциональное выражение)
Функция создается как часть выражения, часто присваивается переменной.
// Синтаксис
const имяПеременной = function(параметры) {
// тело функции
};
// Пример
const multiply = function(a, b) {
return a * b;
};
console.log(multiply(3, 4)); // 12Особенности:
- Нельзя вызвать до присваивания
- Могут быть анонимными (без имени)
3. Стрелочные функции (Arrow Functions)
Современный краткий синтаксис, появившийся в ES6.
// Синтаксис
const имяПеременной = (параметры) => {
// тело функции
};
// Примеры разных вариантов
// Один параметр - скобки можно опустить
const square = x => x * x;
// Несколько параметров
const sum = (a, b) => a + b;
// Без параметров
const sayHello = () => "Hello!";
// Многострочная функция
const checkAge = (age) => {
if (age >= 18) {
return "Совершеннолетний";
} else {
return "Несовершеннолетний";
}
};
console.log(square(5)); // 25
console.log(sum(2, 3)); // 5
console.log(checkAge(20)); // "Совершеннолетний"Особенности:
- Не имеют собственного this (берут из окружающего контекста)
- Не могут быть использованы как конструкторы
- Более краткий синтаксис для простых операций
4. Методы объекта
Функции, которые являются свойствами объектов.
const calculator = {
// Метод объекта
add: function(a, b) {
return a + b;
},
// Краткая запись метода (ES6)
subtract(a, b) {
return a - b;
},
// Стрелочная функция как метод (осторожно с this!)
multiply: (a, b) => a * b
};
console.log(calculator.add(5, 3)); // 8
console.log(calculator.subtract(10, 4)); // 65. Конструктор функций (реже используется)
const divide = new Function('a', 'b', 'return a / b');
console.log(divide(10, 2)); // 5