익명 함수는 전역 변수가 오염되지 않고 페이지에 JavaScript가 페이지에 작성되도록 효과적으로 보장 할 수 있습니다.
이것은 매우 잘 작동하며 친숙하지 않은 페이지에 JavaScript를 추가 할 때 아름답습니다.
1. 익명 기능이란 무엇입니까?
일반적으로 JavaScript에서 함수를 정의하는 세 가지 방법이 있습니다.
함수 키워드 명령문 :
함수 fnmethodname (x) {alert (x);}
기능 리터럴 :
var fnmethodname = function (x) {alert (x);}
함수 () 생성자 :
var fnmethodname = new 함수 ( 'x', 'alert (x);')
위의 세 가지 방법은 동일한 메소드 함수 fnmethodname을 정의합니다.
첫 번째는 가장 일반적으로 사용되는 방법입니다. 후자의 두 사람은 함수를 변수 fnmethodname에 복사하는 것이며,이 함수는 이름, 즉 익명 함수가 없습니다.
실제로, 많은 언어에는 익명의 기능이 있습니다.
2. 함수 리터럴과 함수 () 생성자의 차이
함수 리터럴은 익명 함수이지만 구문은 모든 함수 이름으로 지정할 수 있습니다. 재귀 함수를 작성할 때 자체라고 할 수 있지만 function () 생성자를 사용하여 수행 할 수 없습니다.
var f = 함수 사실 (x) {if (x <= 1) 반환 1; 그렇지 않으면 x*사실 (x-1)을 반환합니다. };
function () 생성자를 사용하면 런타임에 JavaScript 코드의 동적 생성 및 컴파일이 가능합니다. 이런 식으로 그것은 글로벌 함수 Eval ()과 유사합니다.
function () 생성자는 기능 본문이 실행될 때마다 함수 본문을 구문 분석하고 새 기능 객체를 생성합니다. 따라서 루프 또는 자주 실행되는 기능에서 function () 생성자를 호출하는 효율은 매우 낮습니다. 반대로, 기능 리터럴은 만날 때마다 다시 컴파일되지 않습니다.
function () 생성자로 함수를 만들 때 일반적인 범위를 따르지 않으므로 항상 최상위 기능으로 실행됩니다.
var y = "글로벌";
함수 constructFunction () {var y = "local"; 새 기능을 반환합니다 ( "return y"); // 로컬 변수를 얻을 수 없습니다} alert (constructFunction () ()); // "글로벌"및 기능 키워드 정의는 고유 한 특성을 가지며 function () 생성자보다 사용하기가 훨씬 어렵습니다.
따라서이 기술은 일반적으로 거의 사용되지 않습니다.
함수 문자 표현식 및 기능 키워드 정의는 매우 유사합니다.
이전의 차이점을 고려할 때, 문자 그대로의 익명 함수는 OS X 10.4.3의 특정 WebKit 엔진에 버그가 있다는 메시지가 있지만
그러나 우리가 일반적으로 익명 함수라고 부르는 것은 문자 그대로의 기능을 사용하는 익명 함수를 나타냅니다.
3. 익명 함수의 코드 모드
오류 모드 : 작동 할 수 없습니다. 브라우저는 구문 오류를보고합니다.
함수 () {alert (1); } ();
함수 리터럴 : 먼저 함수 객체를 선언 한 다음 실행하십시오.
(함수 () {alert (1);}) ();
우선적 표현 :
(함수 () {alert (2);} ());
void 연산자 :
void function () {alert (3); } ()는 동일합니다. Hedger Wang은 개인적인 이유로 세 번째 유형을 선호하지만 실제 응용 분야에서는 첫 번째 유형을보고 사용합니다.
4. 익명 기능의 적용
"JavaScript의 모듈 패턴"의 첫 번째 문장은 "글로벌 변수는 악마"입니다.
VAR 키워드를 사용하면 익명 함수가 전역 변수에 오염을 일으키지 않고 페이지에 JavaScript가 작성되도록 효과적으로 보장 할 수 있습니다.
이것은 매우 잘 작동하며 친숙하지 않은 페이지에 JavaScript를 추가 할 때 아름답습니다.
실제로 Yui와 그에 해당하는 예제는 많은 익명의 기능을 사용하고 다른 JavaScript 라이브러리도 많은 것을 사용합니다.
JavaScript의 기능 프로그래밍의 초석.
자세한 내용은 "기능적 프로그래밍 기술로 아름다운 JavaScript 작성"및 "기능적 JavaScript 프로그래밍 안내서"를 참조하십시오.
JavaScript에서 익명 기능의 사용법 및 장단점에 대한 위의 자세한 설명은 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.