폐쇄, 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 를 만 드 는 방법 은 기본적으로 패 키 지 를 만 들 었 습 니 다.

좋은 웹페이지 즐겨찾기