Este es un ejemplo muy artificial, pero supongamos que creamos una variable _thisen algún lugar de una función de clase.
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
Esto no funcionará como se espera cuando llamamos a la changeNamefunción debido a que la parte correspondiente del código compilado es el siguiente:
var _this = this;
var _this = {};
(function () {
_this.name = name;
})();
Esto es malo Javascript: tenemos dos vardeclaraciones sobrescriban entre sí. El _thiscreado por el compilador se sobrescribe por mi _this.
Por lo que yo puedo ver, este comportamiento no se especifica en la especificación mecanografiado.
¿Por qué deberían entrar en conflicto? No se puede detectar si el compilador He creado una variable llamada _thisy el nombre del generada automáticamente uno algo más, como _this2para mantener mis variables y los generados por el compilador del pisoteo el uno del otro?













