Jest to bardzo wymyślony przykład, ale załóżmy, tworzymy zmienną _thisgdzieś w funkcji klasy.
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
To nie będzie działać zgodnie z oczekiwaniami, gdy wywołujemy changeNamefunkcję, ponieważ odpowiednia część skompilowany kod wygląda następująco:
var _this = this;
var _this = {};
(function () {
_this.name = name;
})();
To jest złe Javascript: mamy dwie vardeklaracje nadpisywania siebie. _thisStworzony przez kompilator jest zastępowane przez mojego _this.
O ile widzę, to zachowanie nie jest określony w specyfikacji maszynopis.
Dlatego powinny one sprzeczne? Nie może wykryć, czy kompilator I stworzyliśmy zmienną o nazwie _thisi nazwij automatycznie wygenerowany coś innego, jak _this2zachować moje zmienne i te kompilatora generowane z depcząc się nawzajem?













