Javascript 의 익명 함수 소결

3940 단어 JavaScript
다음으로 이동:http://www.jb51.net/article/21670.htm
1. 익명 함수 가 무엇 입 니까?
자바 script 에서 함 수 를 정의 하 는 데 는 일반적으로 다음 과 같은 세 가지 방식 이 있 습 니 다.
  • 함수 키워드 (function) 문장:
    function fnMethodName(x){alert(x);}
  • 함 디지털 면 량 (Function Literals):
    var fnMethodName = function(x){alert(x);}
  • 함수 () 구조 함수:
    var fnMethodName = new Function('x','alert(x);')
  • 위의 세 가지 방법 은 같은 방법 함수 fnMethodName 을 정의 합 니 다. 첫 번 째 방법 은 가장 자주 사용 하 는 방법 입 니 다. 두 번 째 방법 은 모두 하나의 함 수 를 변수 fnMethodName 에 복사 합 니 다. 이 함 수 는 이름 이 없 는 익명 함수 입 니 다.실제로 상당히 많은 언어 에 익명 함수 가 있다..
    2. 편지 숫자 면 량 과 Function () 구조 함수 의 차이
  • 편지 의 숫자 면 량 은 익명 함수 이지 만 문법 은 임의의 함수 이름 을 지정 할 수 있 습 니 다. 재 귀 함 수 를 쓸 때 자신 을 호출 할 수 있 고 Function () 구조 함 수 를 사용 하면 안 됩 니 다.
    var f = function fact(x) {
     if (x < = 1) return 1;
     else return x*fact(x-1);
    };
  • Function () 구조 함수 가 실 행 될 때 자 바스 크 립 트 코드 의 동적 생 성과 컴 파일 을 허용 합 니 다.이 방식 에 서 는 전역 함수 eval () 과 유사 합 니 다.
  • Function () 구조 함수 가 실 행 될 때마다 함수 주 체 를 해석 하고 새로운 함수 대상 을 만 듭 니 다.따라서 순환 되 거나 자주 실행 되 는 함수 에서 Function () 구조 함 수 를 호출 하 는 효율 이 매우 낮다.반면 편지 의 숫자 면 량 은 만 날 때마다 다시 컴 파일 되 는 것 이 아니다.
  • Function () 구조 함수 로 함 수 를 만 들 때 전형 적 인 역할 영역 을 따 르 지 않 고 최상 위 함수 로 실행 해 왔 습 니 다.
    var y = "global";
    function constructFunction() {
      var y = "local";
      return new Function("return y"); //         
    }
    alert(constructFunction()()); //    "global"
    

  • 함수 키워드 정의 에 비해 Function () 구조 기 는 자신 만 의 특징 이 있 고 사용 하기 어 려 운 것 이 많 기 때문에 이 기술 은 보통 사용 되 지 않 습 니 다.한편, 편지 숫자 면 양 표현 식 과 함수 키워드 의 정 의 는 매우 가깝다.앞의 차 이 를 고려 하면 글자 의 익명 함수 가 OS X 10.4.3 의 일부 webkit 엔진 에 bug 가 있다 는 소식 이 있 지만 우리 가 평소에 말 하 는 익명 함 수 는 모두 편지 숫자 면 의 형식 을 사용 한 익명 함 수 를 말한다.더 자세 한 내용 은 자 바스 크 립 트: The Definitive Guide, 5th Edition 의 Functions 장 을 읽 을 수 있 습 니 다.
    3. 익명 함수 의 코드 모드
    어제 hedger wang 그의 블 로그 에 소개 했다 몇 가지 익명 함수 의 코드 모드.
    오류 모드: 작업 을 할 수 없습니다. 브 라 우 저 는 문법 이 잘못 되 었 습 니 다.
    function(){
     alert(1);
    }();
  • 편지 의 숫자 면 량: 먼저 함수 대상 을 설명 한 다음 에 실행 합 니 다.
    (function(){
     alert(1);
    } ) ( );
  • 우선 표현 식: Javascript 실행 표현 식 은 괄호 안에서 밖으로 나 오기 때문에 괄호 로 설명 을 강제 할 수 있 는 함수 입 니 다.
    ( function(){
     alert(2);
    } ( ) );
  • Void 연산 자: 괄호 로 둘러싸 지 않 은 단독 연산 자 를 void 연산 자로 실행 합 니 다.
    void function(){
     alert(3);
    }()

  • 이 세 가지 방식 은 똑 같 습 니 다. hedger wang 은 개인 적 인 이유 로 세 번 째 를 좋아 하 는데 실제 응용 에서 제 가 본 것 과 사용 한 것 은 모두 첫 번 째 입 니 다.
    4. 익명 함수 의 응용
     
  • 자 바스 크 립 트 의 모듈 모드 의 첫 마디 는 '전역 변 수 는 악마' 다.var 키워드 에 맞 춰 익명 함 수 는 페이지 에 자바 script 을 기록 하 는 것 이 전체 변수의 오염 을 초래 하지 않도록 효과적으로 보장 할 수 있 습 니 다.이것 은 익숙 하지 않 은 페이지 에 자 바스 크 립 트 를 추가 할 때 매우 효과 적 이 고 아름답다.실제로 YUI 과 그 에 상응하는 범례 에서 익명 함 수 를 대량으로 사 용 했 고 다른 자 바스 크 립 트 라 이브 러 리 에서 도 대량으로 사용 했다.
  • Javascript 의 함수 식 프로 그래 밍 (functional programming) 의 초석.구체 적 으로 《 함수 식 프로 그래 밍 기술 로 아름 다운 자 바스 크 립 트 를 작성 하 다 》.《 함수 식 자 바스 크 립 트 프로 그래 밍 가이드 》 을 보 세 요.

  • 내 가 과학 으로 인터넷 에 접속 한 것 은 위의 몇 개의 링크 를 열지 않 았 다.

    좋은 웹페이지 즐겨찾기