Jedná se o velmi nepřirozený příklad, ale předpokládejme, že vytvoříme proměnnou _thisněkde v funkce třídy.
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
To nebude fungovat, jak se očekávalo, když říkáme changeNamefunkce, protože příslušná část zkompilovaný kód vypadá takto:
var _this = this;
var _this = {};
(function () {
_this.name = name;
})();
To je špatná Javascript: máme dvě vardeklarace přepisu navzájem. _thisVytvořený kompilátorem je přepsání mou _this.
Co se týče vidím, toto chování není v souladu s strojopisu spec.
Proč by měli být v rozporu? Nemůže kompilátor zjistit, zda jsem vytvořil proměnnou s názvem _thisa název automaticky generované jeden něco jiného, chtěla _this2, aby mé proměnných a ty kompilátoru generované z pošlapávání navzájem?













