Функции стрелки ES6 все еще закрываются над «этим», даже если они не используют его?

Я пытаюсь понять правила, когдаthis лексически связан в функции стрелки ES6. Давайте сначала посмотрим на это:

function Foo(other) {
    other.callback = () => { this.bar(); };

    this.bar = function() {
        console.log('bar called');
    };
}

Когда я строюnew Foo(other)для этого другого объекта устанавливается обратный вызов. Обратный вызов является функцией стрелки, аthis в функции стрелки лексически связана сFoo Например,Foo не будет мусора, даже если я не буду хранить другие ссылки наFoo вокруг.

Что произойдет, если я сделаю это вместо этого?

function Foo(other) {
    other.callback = () => { };
}

Теперь я установил обратный вызов на NOP, и я никогда не упоминаюthis в этом.Мой вопрос: функция стрелки все еще лексически связана сthis, сохраняяFoo жив, покаother жив, или пустьFoo быть мусором в этой ситуации?

Ответы на вопрос(1)

Ваш ответ на вопрос