JavaScript의 변수 범위를 배우기 전에 몇 가지 사항을 명확히 해야 합니다.
a. JavaScript의 변수 범위는 고유한 범위 체인을 기반으로 합니다.
b. JavaScript에는 블록 수준 범위가 없습니다.
c. 함수에 선언된 변수는 함수 전반에 걸쳐 정의됩니다.
1. JavaScript 범위 체인
먼저 다음 코드를 살펴보세요.
alert(rain); 코드를 살펴보세요. JavaScript는 먼저 내부 함수에 rain 변수가 정의되어 있는지 확인합니다. 정의된 경우 내부 함수에 rain 변수가 사용됩니다. rain 변수가 내부 함수에 정의되어 있지 않으면 JavaScript는 계속해서 rain 변수를 확인합니다. 이 코드에서는 rainman 함수 본문에 rain 변수가 정의되어 있지 않으므로 JavaScript 엔진은 계속해서 rainman 함수가 정의되어 있는지 확인합니다. 비 = 1로 정의했으므로 최종 결과는 '1'로 표시됩니다.
스코프 체인: JavaScript가 변수를 쿼리해야 하는 경우 두 개체가 정의되지 않은 경우 검색이 계속됩니다.
위 코드에는 inner, rainman, window의 세 가지 범위 체인 개체가 순서대로 포함되어 있습니다.
2. 함수 본문 내에서 지역 변수는 동일한 이름을 가진 전역 변수보다 우선순위가 높습니다.
>
3. JavaScript 블록 수준 범위가 없습니다.
이것은 또한 다른 언어에 비해 JavaScript의 더 유연한 부분이기도 합니다.
다음 코드를 주의 깊게 살펴보면 변수 i, j, k의 범위가 동일하고 전체 rain 함수 본문에서 전역적임을 알 수 있습니다.
코드 복사
코드는 다음과 같습니다. 따라서 위의 rain 함수는 아래 함수와 동일합니다.
function rain(){
var x;
alert( x );
x = 'rain-man';
alert( x )
}
5. 키워드는 전역 변수입니다.
이 또한 의도하지 않게 많은 전역 변수를 남겨두는 JavaScript 초보자의 일반적인 실수입니다.
6. 전역 변수는 모두 창 개체의 속성입니다.
다음 코드와 동일