폐쇄, 1. 이해 및 사용
3880 단어 JavaScript
패 킷 을 닫 는 것 은 순 함수 식 프로 그래 밍 언어의 특징 이다.
1. 가방 을 닫 고 어떻게 일 하 는 지
패 킷 닫 기: 이것 은 함수 가 생 성 할 때 자신의 함수 에 접근 하고 이 함수 이외 의 변 수 를 조작 할 때 만 든 역할 영역 입 니 다.패 킷 을 닫 으 면 함수 가 모든 변수 와 함수 에 접근 할 수 있 습 니 다. 이 변수 와 함수 가 이 함수 가 설명 할 때의 역할 영역 에 존재 하기 만 하면 됩 니 다.
var outerValue = 'outer';
var later;
function outerFunction () {
var innerValue = 'inner';
function innerFunction () {
console.log(outerValue); // outer
console.log(innerValue); // inner
}
later = innerFunction;
}
outerFunction();
later();
inner Function 을 설명 할 때 함수 뿐만 아니 라 패 킷 도 만 들 었 습 니 다. 이 패 킷 은 함수 성명 뿐만 아니 라 이 역할 영역 에 있 는 모든 변 수 를 포함 합 니 다.inner Function () 이 실 행 될 때 그 당시 에 발 표 된 역할 영역 은 이미 사 라 졌 습 니 다. 패 킷 을 닫 으 면 함 수 를 바 꾸 면 원시 역할 영역 에 접근 할 수 있 습 니 다.
2. 클 로즈 드 사용
2.1 사유 변수
개인 변 수 는 폐쇄 적 인 일반적인 용법 으로 변수의 역할 영역 을 제한 합 니 다.
function Fight () {
var feints = 0;
this.getFeints = function () {
return feints;
};
this.feint = function () {
feints ++;
};
}
var fight = new Fight();
fight.feint();
console.log(fight.getFeints()); // 1
console.log(fight.feints); // undefined
JavaScript 역할 영역 규칙 은 구조 기 내부 에 만 접근 할 수 있 음 을 보 여 줍 니 다.내부 변 수 를 바 꾸 는 데 외부 코드 를 접근 시 키 려 면 저장 방법 getFeints 를 정의 합 니 다. 이 방법 은 내부 변 수 를 읽 을 수 있 을 뿐 기록 할 수 없습니다.feint 방법 에서 변수의 값 을 제어 (증가) 합 니 다.구조 함수 Fight 내부 의 개인 변수 feints 입 니 다. 이 변 수 는 폐쇄 를 통 해 내부 방법 에 만 존재 할 수 있 고 구조 기 외부 에 존재 하지 않 습 니 다.이것 은 하나의 폐쇄 를 구성 했다.
2.2 리 셋 과 타이머
리 셋 을 처리 하거나 타 이 머 를 사용 할 때 패 킷 을 닫 습 니 다. 이 두 가지 상황 에서 함 수 는 모두 후기 에 지정 되 지 않 은 시간 에 비동기 호출 을 합 니 다. 이런 함수 내부 에 서 는 외부 데 이 터 를 자주 방문 해 야 합 니 다.예 를 들 어 jQuery 에서 ajax 의 반전 함수 입 니 다.
타이머
function animate (element) {
var ele = document.getElementById(element);
var tick = 0;
var timer = setInterval(function () {
if (tick < 100) {
ele.style.left = tick + 'px';
tick++;
} else {
clearInterval(timer);
}
}, 100);
}
animate('roll');
타이머 의 익명 함수 에 서 는
ele
, tick
, timer
세 변 수 를 사 용 했 습 니 다.animate 를 만 드 는 방법 은 기본적으로 패 키 지 를 만 들 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.