Функции в JS
Функция — это блок кода, выполняющий определенную задачу. Он может принимать параметры и возвращать значения. Для обеспечения правильной работы функций вам необходимо изучить Обязательные параметры для функций в JavaScript. Функции в JavaScript рассматриваются как first-class objects
, что означает, что они могут быть назначены переменным, переданы в качестве аргументов и возвращены из других функций. Мы предоставляем вам дополнительную информацию о функциях JavaScript: как формируется функция, как ее объявить. методы и операторы.
Типы функций
1. Объявленная функция
Объявление функции - это инструкция, которая определяет функцию с именем, параметрами и телом.
function greet(name) {
console.log(`Hello, ${name}!`);
}
2. Выраженная функция
Функциональное выражение — это способ определить функцию как выражение, которое можно присвоить переменной.
const greet = function(name) {
console.log(`Hello, ${name}!`);
};
3. Стрелочная функция
Стрелочная функция — это сокращенный синтаксис для определения функционального выражения. Более подробно вы можете ознакомится с ними в статье Стрелочные функции.
const greet = (name) => {
console.log(`Hello, ${name}!`);
};
4. Анонимная функция
Анонимная функция - это функция без имени.
const add = function(a, b) {
return a + b;
};
5. IIFE
IIFE (Immediately Invoked Function Expression) — это функция, которая выполняется, как только она определена.
(function() {
console.log('IIFE executed');
})();
Параметры и аргументы функции
Параметр функции — это переменная, указанная в определении функции, а аргумент — это значение, передаваемое функции при ее вызове.
function greet(name) { // "name" is a parameter
console.log(`Hello, ${name}!`);
}
greet('John'); // 'John' is an argument
Функции могут иметь несколько параметров и аргументов.
function add(a, b) {
return a + b;
}
console.log(add(2, 3)); // 5
Возвращаемые значения функции
Функция может возвращать значение с помощью оператора return
. Если функция не возвращает значение, она неявно возвращает undefined
.
function add(a, b) {
return a + b;
}
const result = add(2, 3);
console.log(result); // 5
Возможности функций
Переменные, объявленные внутри функции, доступны только в области действия функции.
function greet() {
const message = 'Hello, world!';
console.log(message);
}
greet(); // 'Hello, world!'
console.log(message); // ReferenceError: message is not defined
Функция подъема
Объявления функций поднимаются наверх области видимости, что означает, что их можно вызывать до того, как они будут определены.
greet(); // 'Hello, world!'
function greet() {
console.log('Hello, world!');
}
Однако функциональные выражения и стрелочные функции не поднимаются и должны быть определены до их вызова.
greet(); // TypeError: greet is not a function
const greet = function() {
console.log('Hello, world!');
};
Другие типы функций
Функция обратного вызова:
Функция обратного вызова - это функция, которая передается в качестве аргумента другой функции и вызывается этой функцией. Обычным вариантом использования функций обратного вызова является асинхронный код, где обратный вызов выполняется после завершения асинхронной операции. Вот пример:
function getUser(id, callback) {
setTimeout(() => {
const user = {
id: id,
name: 'John Doe'
};
callback(user);
}, 2000);
}
getUser(123, (user) => {
console.log(user); // Output: { id: 123, name: 'John Doe' }
});
Функция высшего порядка:
Функция высшего порядка — это функция, которая принимает одну или несколько функций в качестве аргументов или возвращает функцию в качестве результата. Обычный вариант использования функций более высокого порядка — это методы массива, такие как map
, filter
и reduce
.
const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map((num) => {
return num * 2;
});
console.log(doubledNumbers); // Output: [2, 4, 6, 8, 10]
Продвинутые функции
Завершающие функции
Замыкания - это мощная функция JavaScript, которая позволяет функции получать доступ к переменным из своей родительской области видимости даже после возврата родительской функции. Это может быть использовано для создания закрытых переменных и функций, которые недоступны извне функции.
function counter() {
let count = 0;
function increment() {
count++;
console.log(count);
}
return increment;
}
const myCounter = counter();
myCounter(); // Output: 1
myCounter(); // Output: 2
Каррирование
Каррирование — это метод функционального программирования, который позволяет функции принимать несколько аргументов в виде серии функций с одним аргументом. Это может сделать ваш код более модульным и удобным для повторного использования.
function add(a) {
return function(b) {
return a + b;
}
}
const add2 = add(2);
console.log(add2(3)); // Output: 5
Мемоизация
Мемоизация — это метод, который позволяет функции кэшировать свои результаты на основе входных аргументов. Это может улучшить производительность функции, особенно если она выполняет сложные вычисления или поиск данных.
function fibonacci(n, memo = {}) {
if (n in memo) return memo[n];
if (n <= 1) return 1;
memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
return memo[n];
}
console.log(fibonacci(10)); // Output: 89
Теперь вы узнали немного о functions
.
Когда разработчик пишет на JavaScript, он может совершить несколько грубых ошибок, при которых не будет корректно работать код. Если вы хотите их избежать приглашаем вас посетить страницы 8 основных ошибок JavaScript, которые допускают разработчики.
Также для начинающих мы можем предложить несколько советов для улучшения вашей практики написания кода, сделать его более понятным и читабельным.