문제

이것은 매우 인위적인 예는,하지만 우리가 만들 변수 _this 어딘가에서 클래스 기능이다.

class Person {
  constructor (public name : string) {}
  changeName(name) {
    var _this = {};
    (() => {
      this.name = name;
    })();
  }
}

이것이 예상대로 작동하지 않을 때 우리는 전화 changeName 기능 때문에의 관련 부분을 컴파일 된 코드는 다음과 같습니다:

var _this = this;
var _this = {};
(function () {
  _this.name = name;
})();

이것은 나쁜 자바 스크립트:우리는 두 개의 var 선언을 덮어쓰다.이 _this 여 만든 컴파일러를 덮어쓰에 의해 나 _this.

지금까지 볼 수 있듯이,이 문제지에서 지정된 타이프 라이터 spec.

왜 그들은 해야 합니까?할 수 없는 컴파일러를 감지하는 경우가 만든 라는 변수 _this 와의 이름을 자동으로 생성되는 하나의 같은 다른 뭔가 _this2 내 계 변수와 컴파일러에서 생성된 것을 짓밟고에 각각 다른?

도움이 되었습니까?

해결책

컴파일러는 자동으로 생성 _this 참고로 this 을 용이하게 폐쇄될 것이다에 의해 만들어를 사용하여 람다는 구문을 사용합니다.난데없이 타이프 라이터 명세서 어딘가에,그러나 나는 것에 동의하는 컴파일러내야 합류가 이 경우.

내가 좋아하지 않는 아이디어의 컴파일러는 다양한 방법이 방출로 자바 스크립트와 충돌이 명시된 목표를 생성하는"숙"(므로 예측 가능)javascript.

다른 팁

그것은 당신이 무엇을 전화 예약 가변?나는 당신이 없을 변수를 선언"이라는 이"나"문서"하나.

한 MS 가 무한 변수는 없다고 생각의 중요한 문제이다.그들은 아마도 개선 컴파일러를 출력하는 경고를 하지만입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top