익명 함수 ( Anonymous function ) in Javascript

horiz.d·2021년 12월 14일
0

JS 꿀단지

목록 보기
13/35

익명 함수

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

이런 유용하고 강력한 점이 있지만, 이름 없이는 함수를 호출할 방법이 없기에 익명함수는 독립적으로는 유용하지 않다.

따라서 실제로 익명함수는

  1. 일반적으로 다른 함수에 대한 인자로 사용되거나
  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() {
  ..명령..
})();

IIFE 심화 (비공개 메서드 에뮬레이션 Using closure) :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#emulating_private_methods_with_closures


REF : MDN :

https://developer.mozilla.org/ko/docs/Web/JavaScript/A_re-introduction_to_JavaScript

profile
가용한 시간은 한정적이고, 배울건 넘쳐난다.

0개의 댓글