Acesta este un exemplu foarte contrived, dar să presupunem că vom crea o variabilă _thisundeva într - o funcție de clasă.
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
Acest lucru nu va funcționa cum era de așteptat , atunci când vom apela changeNamefuncția , deoarece partea relevantă a codului compilat arata ca acest lucru:
var _this = this;
var _this = {};
(function () {
_this.name = name;
})();
Acest lucru este rău Javascript: avem două vardeclarații suprascriere reciproc. _thisCreat de compilator este suprascris meu _this.
Din câte văd eu, acest comportament nu este specificat în spec dactilografiate.
De ce ar intra în conflict? Nu se poate compilatorul detecta dacă am creat o variabilă cu numele _thisși numele generat automat un altceva, ca _this2să păstreze variabilele mele și cele generate de compilator de la călcat în picioare pe unul de altul?













