12장 함수(2)

hyewon ji·2023년 2월 10일

이번 포스트에서는 다양한 함수의 형태에 대해 소개한다.

1.즉시 실행 함수(IIFE)

함수 정의와 동시에 즉시 실행하는 함수를 의미하며, 단 한번만 호출되고 다시 호출할 수 없다.

(function () {
  const a = 3;
  const b = 5;
  return a + b
}());

즉시 실행함수는 반드시 그룹 연산자 (...)로 감싸야 한다.
즉시 실행함수는 변수나 함수 이름의 충돌을 방지할 수 있다.

2. 재귀함수

재귀 함수는 재귀 호출(자기 자신 호출)을 하는 함수를 말한다. 함수 내부에서 함수 이름 혹은 함수를 가리키는 식별자로 재귀호출을 할 수 있다.

const factorial = function foo(n) {
  if (n <= 1) return 1;
  return n * factorial(n - 1);
}

console.log(factorial(5));

재귀 함수를 사용할 때에는 무한 호출되는것을 막기 위해 반드시 탈출 조건을 만들어야 한다.

3. 중첩함수

함수 내부에 정의된 함수를 중첩함수 또는 내부함수라고 한다. 중첩함수는 외부 함수 내부에서만 호출할 수 있다.

function outer() {
  const x = 1;
  
  function inner() {
    const y = 2;
    console.log(x + y); // 3
  }
  
  inner();
}

outer();

4. 콜백함수

-- 추후 추가 예정--

5. 순수 함수, 비순수 함수

순수함수는 외부상태에 의존하지 않으며 외부상태를 변경하지 않는 함수이다. 이와 반대로, 비순수함수는 외부상태에 의존하거나 외부상태를 변경하는 함수이다.

순수 함수

const count = 0;

// 동일한 인수가 전달되면 항상 동일한 결과를 반환함
function increase(n) {
  return ++n;
}

count = increase(count);
console.log(count) // 1

const = increase(count);
console.log(count) // 2

비순수 함수

const count = 0;

// 외부 변수인 count에 의존하며 외부 변수 상태를 변경한다.
function increase() {
  return ++n;
}

increase();
console.log(count) // 1

increase();
console.log(count) // 2

함수형 프로그래밍은 순수 함수를 통해 부수 효과를 최대한 억제해 오류를 피하고 프로그램의 안정성을 높힌다.

자바스크립트는 멀티 패러다임 언어로, 객체지향 프로그래밍뿐만 아니라 함수형 프로그래밍도 적극 활용한다.

0개의 댓글