javascript는 익명 함수를 만들 수 있도록 허용한다. 기본적인 모습의 예제는 아래와 같다.
function의 이름을 지정하지 않았음을 알 수 있다.
function() {
var sum = 0;
for (var i = 0, j = arguments.length; i < j; i++) {
sum += arguments[i];
}
return sum / arguments.length;
};
이를 활용하면 아래와 같이, C에서 블록 유효 범위를 적용 시킨 것 처럼 지역 변수를 "숨기는" 요령을 부릴 수 있다.
var a = 1;
var b = 2;
(function() {
var b = 3;
a += b;
})(); // 즉시 호출 함수 표현식 : 익명 함수를 정의했고 곧바로 호출했다
a; // 4
b; // 2
이런 유용하고 강력한 점이 있지만, 이름 없이는 함수를 호출할 방법이 없기에 익명함수는 독립적으로는 유용하지 않다.
따라서 실제로 익명함수는
2번의 예제는 아래와 같다.
var avg = function() {
var sum = 0;
for (var i = 0, j = arguments.length; i < j; i++) {
sum += arguments[i];
}
return sum / arguments.length;
};
avg라는 변수에 익명함수를 즉시 할당하여 avg변수를 통해 호출 가능하도록 만들었다.
이것은 즉, function avg() 라고 명명 된 함수 형식을 사용하여 함수를 선언하는 것과 의미상 동일하다.
Immediately invoked function expression (IIFE)
위에서 변수에 할당하는 방법 뿐 아니라, 익명함수를 선언하는 동시에 호출하는 방법 또한 존재한다 이를 즉시호출 함수 표현식(IIFE) 라고 하며 그 기본적인 모습은 아래와 같다.
(function() {
..명령..
})();
https://developer.mozilla.org/ko/docs/Web/JavaScript/A_re-introduction_to_JavaScript