JavaScript 변수 범위를 배우기 전에 몇 가지 사항을 명확히 해야 합니다.
•JavaScript의 가변 범위는 고유한 범위 체인을 기반으로 합니다.
• JavaScript에는 블록 수준 범위가 없습니다.
• 함수에 선언된 변수는 함수 전반에 걸쳐 정의됩니다.
1. JavaScript 범위 체인
먼저 다음 코드를 살펴보세요.
3. JavaScript에는 블록 수준 범위가 없습니다.
이것은 또한 다른 언어에 비해 JavaScript의 더 유연한 부분이기도 합니다.
다음 코드를 주의 깊게 살펴보면 변수 i, j, k의 범위가 동일하고 전체 rain 함수 본문에서 전역적임을 알 수 있습니다.
4 . 함수 내 선언된 변수는 함수 전체에서 정의됩니다.
먼저 이 코드를 살펴보세요.
위 코드는 변수 x가 전체 rain 함수 본문에서 사용될 수 있고 재할당될 수 있음을 보여줍니다. 이 규칙으로 인해 "믿을 수 없는" 결과가 생성됩니다. 다음 코드를 준수하십시오.
은 함수 rain의 지역 변수 x가 함수 본문 전체에 걸쳐 정의되기 때문입니다(var x= 'rain-man', 선언됨). 이는 rain 함수 전체에서 선언됩니다. 동일한 이름을 가진 전역 변수 x가 rain 함수 본문에 숨겨져 있습니다. 여기서 '정의되지 않음'이 나타나는 이유는 처음으로 Alert(x)를 실행할 때 로컬 변수 x가 아직 초기화되지 않았기 때문입니다.
따라서 위의 rain 함수는 다음 함수와 동일합니다.
function rain(){ var x;alert( x ); x = 'rain-man';alert( x );}
5. 키워드로 정의된 변수는 전역 변수입니다.
이것은 JavaScript 초보자들이 흔히 저지르는 실수이기도 합니다. 의도치 않게 많은 전역 변수를 남겨두는 것입니다.
6. 전역 변수는 모두 창 개체의 속성입니다
다음 코드와 동일