Я узнаю о лексической this
передаче, и я понимаю, что жирная стрела получает свое "это" от себя или от функции над ней.Если это обычная функция, я понимаю, что она не получит this
от функции выше этой.Например, это код, который, по моему мнению, не должен запускаться:
function test() {
this.a = 5; // test()' variable
this.b = function() {
//this is a fat arrow function so console log below could grab the this from this function's space, but not higher than this, but it does?
this.c = setTimeout(() => {
console.log(this.a);
}, 1000);
}
}
var d = new test();
d.b();
Так что я ожидаю, что оператор console.log хочет распечатать this.a
.Он не существует в контексте функций жирной стрелки, поэтому он поднимается на один уровень выше уровня анонимной функции.Здесь также нет this.a
.Это обычная не жирная стрелка, означающая, что лексическая область моего понимания должна здесь остановиться, она не должна подниматься выше, но она есть, и я не уверен, почему.Почему это происходит?