Questo è un esempio molto artificiosa, ma supponiamo creiamo una variabile _thisda qualche parte in una funzione di classe.
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
Questo non funziona come previsto quando si chiama la changeNamefunzione di perché la parte rilevante del codice compilato è simile al seguente:
var _this = this;
var _this = {};
(function () {
_this.name = name;
})();
Questo è male Javascript: abbiamo due vardichiarazioni sovrascrittura vicenda. Il _thiscreato dal compilatore viene sovrascritto dal mio _this.
Per quanto posso vedere, questo comportamento non è specificato nelle specifiche dattiloscritto.
Perché dovrebbero entrare in conflitto? Non può il compilatore rilevare se ho creato una variabile chiamata _thise il nome del generata automaticamente una qualcos'altro, come _this2tenere le mie variabili e quelli generati dal compilatore da calpestare l'altro?













