Разбери, можно ли применить 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 нужна обычная функция; для частичного применения стрелки чаще пишут новую стрелку.