Встречается на собеседованиях • сегодня

В чем разница между call, apply и bind

call, apply и bind используются для управления контекстом (this) функции, но работают по-разному:

  1. call – вызывает функцию с указанным this и аргументами, переданными по отдельности:
js
func.call(context, arg1, arg2, ...);
  1. apply – аналогичен call, но аргументы передаются массивом:
js
func.apply(context, [arg1, arg2, ...]);
  1. bind – создает новую функцию с привязанным this, но не вызывает её сразу. Аргументы можно передать при вызове:
js
const boundFunc = func.bind(context, arg1, arg2);
boundFunc();

Пример:

js
const user = { name: 'Alex' };

function greet(greeting, punctuation) {
  console.log(`${greeting}, ${this.name}${punctuation}`);
}

greet.call(user, 'Hello', '!');       // "Hello, Alex!"
greet.apply(user, ['Hi', '?']);      // "Hi, Alex?"
const boundGreet = greet.bind(user);
boundGreet('Hey', '.');              // "Hey, Alex."

Итог:

  • call/apply – вызывают функцию сразу.
  • bind – возвращает новую функцию для отложенного вызова.
  • Разница между call и apply – в способе передачи аргументов.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы