1. 변수 범위: [P71]
이 문장은 매우 통찰력이 있습니다. "ECMAScript에는 전역 환경과 함수 환경이라는 두 가지 실행 환경만 있습니다. 각 함수는 실행입니다. 즉, 변수가 중괄호 쌍 안에 선언되더라도 중괄호 밖에서도 계속 액세스할 수 있습니다. 예는 다음과 같습니다.
for(var i=0; i<5; i ) {
var num = 20; // for 문에 선언된 변수
}
alert(num); // for 문 외부에서 변수를 호출하면 num
값은 예외 문에도 작동합니다.
try {
var num = 20; // try 문에 선언된 변수
a = b; // 예외 발생
} catch(e) {
Alert( num); // catch 문에서 변수를 호출하면 20이 됩니다.
} finally {
alert(num); // finally 문에서 변수를 호출하면 20이 됩니다.
}
Alert( num); // try 문 외부에서 변수를 호출하면 20이 됩니다.
위에서 설명한 두 문 외에도 중괄호 쌍은 실행 환경을 구성할 수 없습니다.
{ var num = 1;3 }
2. 이 포인터: [P83]
여기에 ECMAScript에서 이것의 다른 의미를 나열하십시오:
(1) 전역에서 사용됨 실행 환경은 브라우저의 창 개체인 전역 개체를 나타냅니다.
(2) 함수 실행 환경에서 사용하면 상황이 좀 복잡해집니다. 함수가 비창 개체로서 명확한 속성을 갖지 않고 함수만 정의하는 경우, 함수가 다른 함수에 정의되어 있는지 여부에 관계없이 이 함수에서 this는 여전히 창 개체를 나타냅니다. 함수가 창이 아닌 개체의 속성으로 명시적으로 사용되는 경우 함수의 this는 이 개체를 나타냅니다. (물론 이 참조를 기본값으로 대체하기 위해 적용 또는 호출 함수를 사용할 수 있습니다. 자세한 내용은 [P88]을 참조하십시오.)
(3) new 연산자를 통해 함수를 호출하면 해당 함수는 다음과 같이 처리됩니다. 생성자이며 이는 생성자를 가리킵니다. 함수에 의해 생성된 개체입니다.
참고자료:
"자바스크립트 기본 및 사례 전개에 대한 자세한 설명" 청화대학교 출판부