자바 스크립트 상승 제 3 판 노트 - 함수식

1⃣️ 재귀

계승 기능 :

함수 계승 (NUM) {
         경우 (NUM <= 1 ) {
   반환  1 ; 
} 다른 { 6 
          으로 num * 팩토리얼 (NUM- 1 ); 
    } 
}

변형 예 (함수에 arguments.callee를 포인터가 수행되고, 디커플링)

함수 계승 (NUM) {
     경우 (NUM <= 1 ) {
         반환  1 ; 
    } 다른 {
          으로 num *의 arguments.callee를 (NUM- 1 ); 
}}

:() arguments.callee를 사용할 수 없습니다 변환이 개 엄격 모드를 해결

VAR의 계승 = (함수 f (NUM) {
         경우 (NUM <= 1 ) {
             반환  1 ; 
        } 다른 {
              으로 num *의 F (NUM- 1 ); 
}});

폐쇄 범위 체인 2⃣️

함수 createComparisonFunction (propertyName 형식) {
         복귀 기능 (오브젝트 1, object2) {
             var에 VALUE1 = 오브젝트 1 [propertyName 형식];
            VAR의 값 2 = object2 [propertyName 형식];
            경우 (값 < 값 2) {
                  - 1 ; 
            } 다른  경우 (값 1> 값 2)이 {
                 반환  1 ; 
            } 다른 {
                 반환  0 ; 
            } 
}; }
VAR = createComparisonFunction (비교 " 이름 " );
var에 결과 = 비교 ({이름 : " 니콜라스 " }, {이름 : " 그렉 " });

익명 함수가 목표 함수에 대한 범위 체인 액티브 오브젝트 및 전역 변수를 초기화하는 createComparisonFunction ()에서 리턴되면 createComparisonFunction를 포함한다 ().

따라서 범위 체인은 액티브 오브젝트 createComparisonFunction 함수 (로컬 기능과 로컬 속성, 상기 코드에 반영되지 않음) 및 글로벌 변수 오브젝트 아래의 예를 참조 비교 포함

    VAR의 수 = 100 ;
    VAR의 A = 2 ; 
    함수 작성 () { 
      VAR의 수 = 10 ;
      복귀 함수 () { 
        CONSOLE.LOG (카운트 + a); 
      } 
    }; 
    VAR의 B는 = () 생성; 
    비();

B는 범위 체인 활성 객체 함수를 만드는 초기화 상술 한 바와 같이이, 폐쇄 전형적인 (= 10 카운트) 및 글로벌 변수 (a = 2 = 100 카운트) 때문에 B를 수행 () 시간 카운트 + A = 10 + 2 = 12;

왜 10 + 2, 대신에이 블로그 :? 100 + 2 봐 JS 범위 체인.

 

추천

출처www.cnblogs.com/eco-just/p/11327892.html