Какие способы создания функций ты знаешь?
Ответ от нейросети
sobes.tech AI
-
Function Declaration
// Определение функции function greet(name) { return `Привет, ${name}!`; }Функции, объявленные таким способом, доступны до строки, где они объявлены (поднятие/hoisting).
-
Function Expression
// Присваивание анонимной функции переменной const greet = function(name) { return `Привет, ${name}!`; };Функция создается во время выполнения кода, поднятие не применяется к переменной, содержащей функцию. Может быть именованной или анонимной.
-
Arrow Function (Стрелочная функция)
// Сокращенная запись функции const greet = (name) => { return `Привет, ${name}!`; }; // Для одного параметра скобки можно опустить const greet = name => { return `Привет, ${name}!`; }; // Если тело функции состоит из одного return, можно опустить скобки {} и return const greet = name => `Привет, ${name}!`;Стрелочные функции лексически связывают
this, не имеют собственногоarguments. Не могут быть конструкторами. -
Function Constructor
// Использование конструктора Function const greet = new Function('name', 'return "Привет, " + name + "!";');Функции создаются динамически, из строки. Не рекомендуется для обычного использования из-за проблем с производительностью (требует двойной парсинг) и безопасностью (использование
eval-подобного механизма). -
Методы объектов
// Функция как свойство объекта const person = { name: 'Иван', greet: function() { // Function Expression как метод return `Привет, ${this.name}!`; }, sayHello() { // Сокращенная запись метода (ES6) return `Привет, ${this.name}!`; } };Функции, определенные как свойства объекта. Сокращенная запись (
sayHello()) является синтаксическим сахаром дляsayHello: function(). -
Генератор-функции
// Функция, которая может приостанавливать и возобновлять выполнение function* generateNumbers() { yield 1; yield 2; yield 3; }Используют
yieldдля возврата промежуточных значений и создания итераторов. Определяются с помощью синтаксисаfunction*. -
Асинхронные функции (Async functions)
// Функция, работающая с промисами async function fetchData() { const response = await fetch('...'); const data = await response.json(); return data; }Упрощают работу с асинхронным кодом, позволяют использовать
awaitдля ожидания промисов в неблокирующем режиме. Определяются с помощью синтаксисаasync function.