Выбор ответа Junior this, call, apply, bind спрашивают часто обновлено

Разница между call и apply

Вопрос

Чем fn.call(ctx, 1, 2) отличается от fn.apply(ctx, [1, 2])?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ничем, кроме способа передачи аргументов: списком или массивом. Оба метода вызывают функцию сразу с заданным this, разница только в аргументах: у call через запятую, у apply массивом (или массивоподобным объектом).

Варианты ответа

  1. Ничем, кроме способа передачи аргументов: списком или массивомправильный ответ
  2. apply возвращает новую функцию, а call вызывает сразу
  3. call работает только со стрелочными функциями, а apply с любыми
  4. apply привязывает this навсегда, а call на один вызов

Разбор

Оба метода вызывают функцию сразу с заданным this, разница только в аргументах: у call через запятую, у apply массивом (или массивоподобным объектом). Новую функцию возвращает bind, а не apply. Привязки «навсегда» apply не делает, это тоже про bind. Со стрелками ни call, ни apply не меняют this: у стрелки его нет, аргументы при этом передаются нормально.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.