폐쇄 적 인 작은 예
1443 단어 JavaScript
자바 스 크 립 트 에 서 는 함수 만 작용 영역 을 가지 고 있 습 니 다.즉, 함수 내부 에서 설명 하 는 변 수 는 함수 외부 에서 접근 할 수 없습니다.
함수 에 정 의 된 변 수 는 함수 의 내장 함수 에서 접근 할 수 있 습 니 다.
다음 에 먼저 역할 영역의 예 를 들 어 보 겠 습 니 다.
function foo(){
var a = 10;
function bar(){
a *= 2;
return a;
}
return bar;
}
이 예 에서 a 는 함수 foo 에 정의 되 어 있 지만 함수 bar 는 그것 을 방문 할 수 있 습 니 다. bar 도 foo 에 정의 되 어 있 기 때 문 입 니 다.bar 는 실행 과정 에서 a 를 a 곱 하기 2 로 설정 합 니 다.bar 가 foo 에서 호출 되 었 을 때 a 에 접근 할 수 있 습 니 다. 이해 할 수 있 습 니 다.그런데 만약 에 bar 가 foo 외부 에서 호출 된다 면?
function foo(){
var a = 10;
function bar(){
a *= 2;
return a;
}
return bar;
}
var baz = foo();//baz bar
baz();//returns 20
baz();//returns 40
baz();//returns 80
var blat = foo();//blat bar
blat();//returns 20, a
상기 코드 에서 되 돌아 오 는 bar 함수 에 대한 인용 은 변수 baz 에 부 여 됩 니 다.이 함 수 는 현재 foo 외부 에서 호출 되 었 지만, 여전히 a 에 접근 할 수 있 습 니 다.이것 은 자 바스 크 립 트 의 작용 역 이 문법 적 이기 때문이다.함 수 는 그들의 역할 영역 을 정의 하 는 데 실 행 됩 니 다. (이 예 는 foo 내부 의 역할 영역 입 니 다) 그들의 역할 영역 을 호출 하 는 데 실 행 됩 니 다.bar 가 foo 에 정의 되 기만 하면 foo 에서 정의 하 는 모든 변 수 를 방문 할 수 있 습 니 다. foo 의 실행 이 끝 났 더 라 도.
이것 이 바로 폐쇄 의 한 예 다.foo 가 돌아 온 후에 그 역할 영역 은 저장 되 었 으 나 돌아 온 함수 만 이 역할 영역 에 접근 할 수 있 습 니 다.앞의 예제 에서 baz 와 blat 는 각각 이 역할 영역 과 a 의 사본 이 있 고 그들 만 이 수정 할 수 있 습 니 다.인 라인 함 수 를 되 돌려 주 는 것 은 패 키 지 를 만 드 는 데 가장 자주 사용 되 는 수단 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.