JavaScript 의 변수 역할 영역 깊이 이해

자 바스 크 립 트 의 변수 역할 영역 을 배우 기 전에 우 리 는 몇 가 지 를 명 확 히 해 야 한다.a,자 바스 크 립 트 의 변수 역할 영역 은 그 특유 의 역할 영역 체인 을 바탕 으로 한다.b.JavaScript 에는 블록 급 역할 영역 이 없습니다.c.함수 에서 설명 하 는 변 수 는 전체 함수 에서 정의 되 어 있 습 니 다.1.JavaScript 의 역할 도 메 인 체인 은 먼저 다음 코드 를 보 세 요
 
<script type="text/javascript" language="javascript">
var rain = 1;
function rainman(){
var man = 2;
function inner(){
var innerVar = 4;
alert(rain);
}
inner(); // inner
}
rainman(); // rainman
</script>
alert(rain)를 관찰 합 니 다.이 코드.JavaScript 는 먼저 inner 함수 에서 변수 rain 을 정의 하 는 지 찾 습 니 다.정의 되면 inner 함수 의 rain 변 수 를 사용 합 니 다.inner 함수 에 rain 변 수 를 정의 하지 않 으 면 JavaScript 는 rainman 함수 에서 rain 변 수 를 정의 하 는 지 계속 찾 습 니 다.이 코드 에서 rainman 함수 에 rain 변 수 를 정의 하지 않 으 면 JavaScript 엔진 은 계속 위로(전체 대상)rain 을 정의 하 는 지 찾 습 니 다.전역 대상 에서 우 리 는 rain=1 을 정 의 했 기 때문에 최종 결 과 는'1'이 팝 업 됩 니 다.역할 도 메 인 체인:자바 스 크 립 트 는 하나의 변수 x 를 조회 해 야 할 때 먼저 역할 도 메 인 체인 의 첫 번 째 대상 을 찾 습 니 다.첫 번 째 대상 으로 x 변 수 를 정의 하지 않 으 면 자바 스 크 립 트 는 x 변 수 를 정의 하 는 지 계속 찾 습 니 다.두 번 째 대상 이 정의 되 지 않 으 면 계속 찾 습 니 다.위의 코드 는 세 가지 역할 도 메 인 체인 대상 과 관련 되 는데 그 다음은 inner,rainman,window 이다.2.함수 체 내부 에서 국부 변수의 우선 순 위 는 같은 이름 의 전체 변수 보다 높다
 
<script type="text/javascript" language="javascript">
var rain = 1; // rain
function check(){
var rain = 100; // rain
alert( rain ); // 100
}
check();
alert( rain ); // 1
</script>
자 바스 크 립 트 는 블록 급 역할 영역 이 없습니다.이 점 은 자 바스 크 립 트 가 다른 언어 에 비해 유연 한 부분 이기 도 하 다.아래 코드 를 자세히 살 펴 보면 변수 i,j,k 역할 영역 이 똑 같 고 그들 은 전체 rain 함수 에서 전체 적 인 것 을 발견 할 수 있 습 니 다
 
<script type="text/javascript" language="javascript">
function rainman(){
/**
* rainman i j k
*/
var i = 0;
if( 1 ){
var j = 0;
for( var k = 0 ; k < 3 ; k++ ){
alert( k ); // 0 1 2
}
alert( k ); // 3
}
alert( j ); // 0
}
</script>
4.함수 에서 설명 한 변 수 는 전체 함수 에서 정의 된다.우선 이 코드 를 살 펴 보 세 요
 
<script type="text/javascript" language="javascript">
function rain(){
var x = 1;
function man(){
x = 100;
}
man(); // man
alert( x ); // 100
}
rain(); // rain
</script>
위의 코드 는 변수 x 가 전체 rain 함수 에서 사용 할 수 있 고 다시 할당 할 수 있다 는 것 을 설명 했다.이 규칙 으로 인해'상상 할 수 없 는'결과 가 발생 하여 아래 의 코드 를 관찰 할 것 이다.이것 은 함수 rain 내 부분 변수 x 가 전체 함수 내 에 정의 되 어 있 기 때문에(var x=rain-man,성명)전체 rain 함수 내 에 같은 이름 의 전체 변수 x 를 숨 겼 습 니 다.'undefined'가 팝 업 되 는 이 유 는 첫 번 째 alert(x)를 실 행 했 을 때 부분 변수 x 가 초기 화 되 지 않 았 기 때 문 입 니 다
 
<script type="text/javascript" language="javascript">
var x = 1;
function rain(){
alert( x ); // 'undefined', 1
var x = 'rain-man';
alert( x ); // 'rain-man'
}
rain()
</script>
그래서 위의 rain 함 수 는 아래 의 함수 와 같 습 니 다
 
function rain(){
var x;
alert( x );
x = 'rain-man';
alert( x );
}
5.var 키 워드 를 사용 하지 않 은 변 수 는 모두 전역 변수 입 니 다
 
<script type="text/javascript" language="javascript">
function rain(){
x = 100; // x
}
rain();
alert( x ); // 100
</script>
이것 도 자 바스 크 립 트 초보 자 들 이 흔히 볼 수 있 는 오류 로 무의식중에 남 긴 많은 전역 변수 이다.6.전역 변 수 는 모두 window 대상 의 속성 입 니 다
 
<script type="text/javascript" language="javascript">
var x = 100 ;
alert( window.x );// 100
alert(x);
</script>
아래 코드 와 같 습 니 다
 
<script type="text/javascript" language="javascript">
window.x = 100;
alert( window.x );
alert(x)
</script>

좋은 웹페이지 즐겨찾기