TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.6K subscribers
Post #529 4.82K
📌 Какие способы создания функций знаешь?

💬 Спрашивают в 3% собеседований

В JavaScript существует несколько способов создания функций. Каждый способ имеет свои особенности и применяется в зависимости от контекста. Рассмотрим основные из них: функциональные выражения, функциональные объявления, стрелочные функции и методы объекта.

1️⃣ Функциональное объявление (Function Declaration)
Это наиболее традиционный способ объявления функции. Функция, объявленная таким образом, доступна во всем блоке кода благодаря поднятию (hoisting).

🤔 Пример:
function greet(name) {
return `Hello, ${name}!`;
}

console.log(greet("Alice")); // "Hello, Alice!"


🤔 Особенности:

➕ Функция доступна до своего объявления благодаря поднятию.

➕ Легко читается и используется для создания именованных функций.

2️⃣ Функциональное выражение (Function Expression)
Функция, объявленная как выражение, не поднимается. Такая функция может быть анонимной или именованной.

🤔 Пример:
const greet = function(name) {
return `Hello, ${name}!`;
};

console.log(greet("Bob")); // "Hello, Bob!"


🤔 Особенности:

➕ Функция не поднимается, доступна только после её объявления.

➕ Может быть анонимной или именованной.

3️⃣ Стрелочные функции (Arrow Functions)
Стрелочные функции введены в ES6. Они имеют более короткий синтаксис и не имеют своего this, arguments, super, или new.target.

🤔 Пример:
const greet = (name) => `Hello, ${name}!`;

console.log(greet("Charlie")); // "Hello, Charlie!"


🤔 Особенности:

➕ Не имеют своего this, используют значение this из внешнего контекста.

➕ Не могут быть использованы в качестве конструкторов.

➕ Подходят для коротких функций и коллбеков.

4️⃣ Методы объекта (Object Methods)
Функции могут быть объявлены как методы объекта. В ES6 для этого используется сокращенный синтаксис.

🤔 Пример:
const person = {
name: "David",
greet() {
return `Hello, ${this.name}!`;
}
};

console.log(person.greet()); // "Hello, David!"


🤔 Особенности:

➕ Метод объекта имеет доступ к свойствам объекта через this.

➕ Поддерживается краткий синтаксис в ES6.

5️⃣ Конструкторные функции (Constructor Functions)
Конструкторные функции используются для создания объектов с помощью ключевого слова new.

🤔 Пример:
function Person(name) {
this.name = name;
}

Person.prototype.greet = function() {
return `Hello, ${this.name}!`;
};

const person = new Person("Eve");
console.log(person.greet()); // "Hello, Eve!"


🤔 Особенности:

➕ Используются с ключевым словом new для создания новых объектов.

➕ Создают экземпляры объектов с общими методами.

6️⃣ Генераторные функции (Generator Functions)

Генераторные функции возвращают объект-итератор и могут приостанавливать своё выполнение с помощью ключевого слова yield.

🤔 Пример:
function* generateSequence() {
yield 1;
yield 2;
yield 3;
}

const generator = generateSequence();

console.log(generator.next().value); // 1
console.log(generator.next().value); // 2
console.log(generator.next().value); // 3


🤔 Особенности:

➕ Возвращают объект-итератор.

➕ Могут приостанавливать и возобновлять выполнение.

🤔 Вкратце:

1️⃣ Функциональное объявление: Классический способ, функция доступна во всём блоке.

2️⃣ Функциональное выражение: Функция объявляется в выражении, не поднимается.

3️⃣ Стрелочные функции: Краткий синтаксис, нет своего this.

4️⃣ Методы объекта: Функции, объявленные внутри объекта.

5️⃣ Конструкторные функции: Используются с new для создания объектов.

6️⃣ Генераторные функции: Возвращают итераторы, могут приостанавливать выполнение.

Короткий ответ: В JavaScript можно создавать функции разными способами: обычные функции, функции внутри переменных, стрелочные функции, функции внутри объектов, функции для создания объектов и специальные функции, которые могут делать паузы.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
  • 🔥 21
  • 👍 14
  • ❤ 2
More from @easy_javascript_ru
  1. Oct 16, 2026🤔 Что такое meta теги? Meta-теги – это специальные HTML-теги, которые содержат метаинформ…
  2. Oct 15, 2026Post #3044
  3. Oct 15, 2026🤔 Какие преимущества у di? Dependency Injection (DI) – это паттерн проектирования, которы…
  4. Oct 14, 2026🤔 Зачем создавались библиотеки react и другие? Библиотеки, такие как React, создавались д…
  5. Oct 13, 2026🤔 Что такое репозиторий? Это хранилище кода, файлов и их истории изменений. Используется…
  6. Oct 13, 2026🤔 Как мы можем замерить скорость работы участка кода с date.Now? В JavaScript можно замер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →