1. 익명함수란 무엇인가요?
Javascript에서 함수를 정의하는 방법은 일반적으로 세 가지가 있습니다.
함수 키워드(함수) 문:
function fnMethodName(x){alert(x);}
함수 리터럴:
var fnMethodName = function(x){alert(x); }
Function() 생성자:
var fnMethodName = new Function('x','alert(x);')
위의 세 가지 메소드는 동일한 메소드 함수 fnMethodName을 정의하며, 첫 번째 메소드가 가장 일반적으로 사용되는 Method 중 후자의 두 메소드는 함수를 fnMethodName 변수에 복사하는데 이 함수에는 이름이 없습니다. 즉 익명 함수입니다. 실제로 상당수의 언어에는 익명 기능이 있습니다.
2. 함수 리터럴과 Function() 생성자의 차이점
함수 리터럴은 익명 함수이지만 구문을 사용하면 함수 이름을 지정할 수 있습니다. 재귀 함수는 자신을 호출할 수 있지만 Function() 생성자를 사용하면 호출할 수 없습니다.
var f = functionfact(x) {
if (x < = 1) return 1;
else return x*fact(x-1)
}
Function() 생성자는 런타임 Javascript 코드를 허용합니다. 역학 생성 및 편집. 이러한 방식은 전역 함수 eval()과 유사합니다.
Function() 생성자는 함수 본문을 구문 분석하고 실행될 때마다 새 함수 객체를 생성합니다. 따라서 루프나 자주 실행되는 함수에서 Function() 생성자를 호출하는 효율성은 매우 낮습니다. 대조적으로, 함수 리터럴은 만날 때마다 다시 컴파일되지 않습니다.
Function() 생성자를 사용하여 함수를 생성하면 일반적인 범위를 따르지 않으며 항상 최상위 함수로 실행됩니다.
var y = "global"
function constructionFunction () {
var y = "local";
return new Function("return y"); // 지역 변수를 얻을 수 없습니다.
}
alert(constructFunction()() ); // "전역" 출력
함수 키워드 정의에 비해 Function() 생성자는 고유한 특성을 가지며 사용하기가 훨씬 어렵기 때문에 이 기술은 일반적으로 거의 사용되지 않습니다. 함수 리터럴 표현식은 함수 키워드 정의와 매우 유사합니다. 이전 차이점을 고려하면 OS X 10.4.3의 일부 웹킷 엔진에서 리터럴 익명 함수에 버그가 있다는 소식이 있지만 일반적으로 우리가 참조하는 익명 함수는 함수 리터럴 형식의 익명 함수를 나타냅니다. 자세한 내용은 "JavaScript: The Definitive Guide, 5th Edition"의 함수 장을 참조하세요.
3. 익명 함수의 코드 패턴
어제 hedger wang은 자신의 블로그에서 여러 가지 익명 함수의 코드 패턴을 소개했습니다.
오류 패턴: 작동할 수 없습니다. 브라우저는 구문 오류를 보고합니다.
function(){
alert( 1);
}();
함수 리터럴: 먼저 함수 개체를 선언한 다음 실행합니다.
(function(){
alert (1) ;
} ) ( );
우선순위 표현식: 자바스크립트는 괄호 안부터 바깥쪽으로 표현식을 실행하므로 괄호를 사용하여 선언된 함수를 강제로 실행할 수 있습니다. .
( function(){
alert (2) ;
} ( ) );
공허 연산자: 괄호로 묶이지 않은 단일 피연산자를 수행하려면 void 연산자를 사용합니다.
void function(){
alert(3);
}()
Diese drei Methoden sind gleichwertig, Hedger Wang bevorzugt aus persönlichen Gründen die dritte Es gibt drei Typen, aber in tatsächlichen Anwendungen sehe und verwende ich den ersten Typ.
4. Anwendung anonymer Funktionen Der erste Satz in „
Ein Modulmodus von Javascript“ lautet „Globale Variablen sind der Teufel“. In Kombination mit dem Schlüsselwort var können anonyme Funktionen effektiv sicherstellen, dass Javascript auf die Seite geschrieben wird, ohne die globalen Variablen zu verschmutzen. Dies ist sehr effektiv und elegant, wenn Sie Javascript zu einer unbekannten Seite hinzufügen. Tatsächlich werden anonyme Funktionen in YUI und den entsprechenden Paradigmen häufig verwendet und werden auch in anderen Javascript-Bibliotheken häufig verwendet.
Javascript ist der Grundstein der funktionalen Programmierung. Einzelheiten finden Sie unter „
Schreiben von schönem JavaScript mit funktionalen Programmiertechniken“ und „
Leitfaden zur funktionalen JavaScript-Programmierung“.