Отладчик Chrome показывает неочевидное (неправильное?) Значение для этого внутри функции стрелки
Вот пример:
function main () {
return () => {
console.log(42);
};
}
main()();
Если мы поместим точку останова в строку с оператором консоли и проверим значение this
на Scope
На панели DevTools мы видим, что:
Тем не менее, если мы добавим this
в качестве второго аргумента оператора logging мы можем увидеть немного другую картину:
Каждый всегда предполагает this
заимствовано функцией стрелки из внешней лексической среды. Поскольку мы запускаем код в нестрогом режиме, значение для this
за main
функция всегда должна быть равна Window
,
Есть похожие вопросы (и тот, и другой), но оба они описывают проблему с переданным кодом, в то время как в нашем случае это чистый JavaScript.
Отсюда логичный вопрос - это проблема с DevTools или она задумана?