С Вы не знаете JS - это и прототипы объектов , автор Кайл Симпсон, стр. 32, заголовок Лексические выражения :
function foo() {
return (a) => {
console.log(this.a);
};
}
var obj1 = {
a:2
}
var obj2 = {
a:3
}
var bar = foo.call(obj1);
bar.call(obj2); // 2, not 3!
Дело в том, что эта возвращенная функция стрелки унаследует лексический этот от функции foo .
То, что я не понимаю, почему вход для этой функции стрелки выше a
?
- Я удалил 'a' из функции стрелки, и этот пример все еще работает как ожидалось.
- Когда функция стрелки вызывается через ссылки, они вызываются без входных аргументов.
Какой смысл иметь «а» в качестве входа для функции стрелки?