Является ли это ошибкой, если в качестве входных данных для этой функции стрелки указано «а»? - PullRequest
0 голосов
/ 31 марта 2020

С Вы не знаете 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' из функции стрелки, и этот пример все еще работает как ожидалось.
  • Когда функция стрелки вызывается через ссылки, они вызываются без входных аргументов.

Какой смысл иметь «а» в качестве входа для функции стрелки?

1 Ответ

3 голосов
/ 31 марта 2020

Какой смысл иметь «a» в качестве входа для функции стрелки?

Как вы сказали, это объявление переменной, которое никогда не используется.

Это бессмысленно.

ESLint сообщает:

'a' определено, но никогда не используется. (без неиспользованных переменных)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...