Стрелочная функция JavaScript

Сколько статей уже не прочитал, не могу понять, как работает this со стрелочными функциями. Как я понял, в случае с обычной функцией this зависит от контекста выполнения, а стрелочная функция берет this, в котором создана. Тогда у меня вопрос:введите сюда описание изображения

Почему стрелочная функция консолит name из глобала? Она же создана в объекте person, значит, this = person! Объясните пожалуйста, как это работает. Я понимаю call, apply,bind, но тут застрял :( P.S. введите сюда описание изображения

Как я понял, this берет значение ближайшей внешней функции, вот и все


Ответы (1 шт):

Автор решения: Zhihar

Стрелочные функции особенные: у них нет своего «собственного» this. Если мы используем this внутри стрелочной функции, то его значение берётся из внешней «нормальной» функции.

Например, здесь arrow() использует значение this из внешнего метода user.sayHi():

Это является особенностью стрелочных функций. Они полезны, когда мы на самом деле не хотим иметь отдельное значение this, а хотим брать его из внешнего контекста.

https://learn.javascript.ru/object-methods

https://learn.javascript.ru/arrow-functions

Короче, в приведённом примере стрелочная функция не видит person, а выше person в данном случае только глобальные переменные

→ Ссылка