Javascript 의 역할 영역 및 블록 급 역할 영역
5653 단어 js역할 영역블록 급 역할 영역
자 바스 크 립 트 의 변수 역할 영역 을 배우 기 전에 몇 가 지 를 명 확 히 해 야 합 니 다.
a.JavaScript 의 변수 역할 도 메 인 은 그 특유 의 역할 도 메 인 체인 을 바탕 으로 합 니 다.
b.JavaScript 에는 블록 급 역할 영역 이 없습니다.
c.함수 에서 설명 하 는 변 수 는 전체 함수 에서 정의 되 어 있 습 니 다.
javascript 의 변수 역할 영역 은 평소 사용 하 는 클래스 C 언어 와 다 릅 니 다.예 를 들 어 C\#의 코드:
static void Main(string[] args)
{
if(true)
{
int number=10;
}
Console.WriteLine(number);
}
이 코드 를 컴 파일 할 수 없습니다."현재 컨 텍스트 에 number 가 존재 하지 않 습 니 다."이 변수의 작용 역 은 괄호 로 한정 되 어 있 기 때문에 블록 급 작용 역 이 라 고 부른다.
블록 급 역할 영역 에서 모든 변 수 는 정 의 된 괄호 안에 있 습 니 다.정의 부터 괄호 가 끝 날 때 까지 이 범위 에서 사용 할 수 있 습 니 다.이 범 위 를 벗 어 나 면 접근 할 수 없습니다.즉,
if(true)
{
int number=10;
Console.WriteLine(number);
}
변수의 정의 와 같은 괄호 안에 사용 되 기 때문에 접근 할 수 있 습 니 다.그러나 자 바스 크 립 트 에는 블록 급 작용 역 의 개념 이 없다.
2.자바 script 의 역할 영역
1.함수 한정 변수 역할 영역
javascript 에서 함수 에 정 의 된 변 수 는 함수 에서 접근 할 수 있 지만 함수 밖에서 접근 할 수 없습니다.코드:
<script type="text/javascript">
var num=function()
{
var number=10;
};
try{
alert(number);
}catch(e)
{
alert(e);
}
</script>
코드 가 실 행 될 때 이상 을 던 집 니 다.변수 number 는 정의 되 지 않 습 니 다.함수 에 정 의 된 변 수 는 더 이상 함수 밖에서 사용 할 수 없 기 때 문 입 니 다.함수 내 에서 임의로 사용 할 수 있 습 니 다.값 을 부여 하기 전에 도:
<script type="text/javascript">
var num=function(){
alert(number);
var number=10;
alert(number);
};
try{
num();
}catch(e){
alert(e);
}
</script>
이 코드 가 실 행 된 후에 오 류 를 던 지지 않 고 두 번 팝 업 합 니 다.각각 undefined 와 10 입 니 다.2.하위 도 메 인 부모 도 메 인 방문
함 수 는 변수의 역할 영역 을 제한 할 수 있 습 니 다.그러면 함수 에 있 는 함 수 는 이 역할 영역의 하위 영역 입 니 다.하위 영역 에 있 는 코드 는 부모 영역 에 접근 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
<script type="text/javascript">
var func=function(){
var number=10;
var sub_func=function(){
alert(num);
};
sub_func();
};
func();
</script>
이 코드 가 실 행 된 결 과 는 10 이지 만,하위 필드 에서 부모 필드 에 접근 하 는 코드 도 조건 이 있 습 니 다.
<script type="text/javascript">
var func=function(){
var number=10;
var sub_func=function(){
var num=20;
alert(num);
};
sub_func();
};
func();
</script>
이 코드 는 앞 에 있 는"var num=20;"보다 하나 더 많 습 니 다.이 코드 는 하위 필드 에 있 으 면 하위 필드 가 부모 필드 에 접근 하 는 상황 이 달라 집 니 다.이 코드 의 인쇄 결 과 는 20 입 니 다.이때 하위 필드 가 방문 하 는 num 은 부모 필드 가 아 닌 하위 필드 의 변수 입 니 다.이 를 통 해 알 수 있 듯 이 방문 은 일정한 규칙 이 있 습 니 다.자바 script 에서 변 수 를 사용 합 니 다.자바 script 해석 기 는 먼저 현재 역할 영역 에서 이 변수의 정의 가 있 는 지 검색 합 니 다.있 으 면 이 변 수 를 사용 합 니 다.없 으 면 부모 영역 에서 변 수 를 찾 고 순서대로 유추 합 니 다.최상 위 역할 영역 까지 찾 지 못 하면 이상'변수 가 정의 되 지 않 음'을 던 집 니 다.코드 는 다음 과 같 습 니 다.
<script type="text/javascript">
(function (){
var num=10;
(function (){
var num=20;
(function(){
alert(num);
})();
})();
})();
</script>
이 코드 가 실 행 된 후 20 을 출력 하고'var num=20
'를 떼 어 내 면 10.똑 같이'var num=10
'를 빼 면 정의 되 지 않 은 오류 가 발생 합 니 다.다음은 JS 역할 영역 과 블록 급 역할 영역 을 소개 합 니 다.
역할 영역 은 항상 모든 프로 그래 밍 언어 에서 중요 한 것 입 니 다.변수 와 매개 변수의 가시 성과 생명 주 기 를 제어 하기 때 문 입 니 다.여기까지 말 하면 먼저 두 가지 개념 을 이해한다.블록 급 작용 역 과 함수 작용 역 이다.
블록 급 역할 영역 은 무엇 입 니까?
모든 꽃 괄호(((와 곶)중의 어구 집합 은 하나의 블록 에 속 하 는데 그 중에서 정 의 된 모든 변 수 는 코드 블록 밖에서 볼 수 없 으 며 우 리 는 블록 급 역할 영역 이 라 고 부른다.
함수 역할 영역 을 이해 하기 쉽 습 니 다(*^ ^*).함수 에 정 의 된 매개 변수 와 변 수 는 함수 외부 에서 볼 수 없습니다.
대부분의 클래스 C 언어 는 블록 급 역할 영역 을 가지 고 있 지만 JS 는 없다.다음 데모 보 세 요:
//C
#include <stdio.h>
void main()
{
int i=2;
i--;
if(i)
{
int j=3;
}
printf("%d/n",j);
}
이 코드 를 실행 하면"use an undefined variable:j"의 오류 가 발생 합 니 다.C 언어 는 블록 급 역할 도 메 인 을 가지 고 있 습 니 다.j 는 if 의 구문 블록 에서 정의 되 기 때문에 블록 밖 에 서 는 접근 할 수 없습니다. JS 는 어떻게 표현 하 는 지,또 다른 demo 를 살 펴 보 자.
functin test(){
for(var i=0;i<3;i++){
}
alert(i);
}
test();
이 코드 를 실행 하면'3'이 팝 업 됩 니 다.블록 밖에서 블록 에 정 의 된 변수 i 는 여전히 접근 할 수 있 습 니 다.즉,JS 는 블록 급 역할 영역 을 지원 하지 않 습 니 다.함수 역할 영역 만 지원 하고 한 함수 의 모든 위치 에서 정 의 된 변 수 는 이 함수 의 어느 곳 에서 도 볼 수 있 습 니 다. 그러면 우 리 는 어떻게 JS 가 블록 급 역할 영역 을 가지 게 해 야 합 니까?한 함수 에서 정 의 된 변 수 를 기억 하 십 니까?이 함수 가 호출 되면 변 수 는 삭 제 됩 니 다.우 리 는 이 특성 으로 JS 의 블록 급 역할 도 메 인 을 모 의 할 수 있 습 니까?아래 이 데모 를 보 세 요.
function test(){
(function (){
for(var i=0;i<4;i++){
}
})();
alert(i);
}
test();
이 때 다시 실행 하면"i"가 정의 되 지 않 은 오류 가 발생 합 니 다.하하,이 루어 졌 죠~~~여기 서 우 리 는 for 문 구 를 닫 힌 가방 에 넣 은 다음 에 이 함 수 를 호출 합 니 다.함수 호출 이 완료 되면 변 수 는 i 가 자동 으로 소각 되 기 때문에 우 리 는 블록 밖에서 방문 할 수 없습니다. JS 의 패 킷 닫 기 기능 is the most important feature(*^ ^*)알다JS 에서 이름 충돌 을 방지 하기 위해 서 는 전역 변수 와 전역 함 수 를 사용 하 는 것 을 피해 야 합 니 다.그렇다면 어떻게 피해 야 할 까?좋 습 니 다.위의 demo 에서 보 듯 이 우 리 는 정의 할 모든 내용 을 하나 에 넣 을 수 있 습 니 다.
(function (){
//
})();
총결산위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 자바 script 의 역할 영역 과 블록 급 역할 영역 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.