PassFront
  1. PassFront
  2. База знаний
  3. Функции

Разбери, можно ли применить bind к стрелочной функции: при каких условиях и какие ограничения.

Функции

Применить `bind` к стрелочной функции можно синтаксически, но это бесполезно для смены `this`: стрелка не имеет своего контекста, и `bind` его не изменит. Предустановить аргументы bind всё же может.

Почему bind не меняет this стрелки

this стрелки лексический — зафиксирован при создании. bind создаёт новую функцию, но привязка this игнорируется:

const arrow = () => this;
const bound = arrow.bind({ a: 1 });
bound(); // this всё равно из окружения, НЕ { a: 1 }

Ошибки не будет — bind просто не повлияет на this.

Что bind всё-таки может

Предустановить аргументы (частичное применение) — это работает и для стрелок:

const add = (a, b) => a + b;
const add5 = add.bind(null, 5); // this игнорируется, но аргумент фиксируется
add5(10); // 15

Практический вывод

  • Хотите зафиксировать this → используйте обычную функцию (у неё bind работает).
  • Хотите частичное применение стрелки → bind(null, ...args) допустимо, но чаще пишут новую стрелку: const add5 = (b) => add(5, b).

Коротко для собеседования

bind к стрелке применяется без ошибки, но this не меняет (он лексический). Предустановить аргументы (bind(null, arg)) можно. Для смены this нужна обычная функция; для частичного применения стрелки чаще пишут новую стрелку.

Другие вопросы раздела