Это очень надуманный пример, но давайте предположим , что мы создаем переменную _thisгде - то в функции класса.
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
Это не будет работать , как и ожидалось , когда мы называем changeNameфункцию , так как соответствующая часть скомпилированного кода выглядит следующим образом :
var _this = this;
var _this = {};
(function () {
_this.name = name;
})();
Это плохо JavaScript: у нас есть два varзаявления перезапись друг друга. _thisСозданный компилятором перезапись По моим _this.
Насколько я понимаю, это поведение не указано в спецификации машинописи.
Почему они должны конфликтовать? Компилятор не может обнаружить , если я создал переменную с именем _thisи имя автоматически сгенерированной одно что - то еще, хотел , _this2чтобы мои переменные и сгенерированного компилятором те из попирая друг с другом?













