티스토리 뷰

1. Parameter 관련

1.1 Rest Parameter

: 함수 파라미터 펼치기

function foo(first, ...rest) { // 1, 2, 3, 4   = ...rest
  console.log(rest)            //  [ 2, 3, 4 ] = rest
  console.log(...rest)         //    2, 3, 4   = ...rest
}
foo(1, 2, 3, 4)                //    2, 3, 4   = ...rest

1.2 함수 기본 파라미터값(Default Parameters)

function create({ name = 'Unnamed', age = 1, favor = undefined }) {
  return { name, age, favor }
}

const created_user_1 = create({ name: 'Aaron' })
const created_user_2 = create({ name: 'Baron', age: 20 })
const created_user_3 = create({                age: 10, favor: 'Game' })
console.log(created_user_1)
console.log(created_user_2)
console.log(created_user_3)

1.3 커링을 통한 파라미터 쪼개기

  •  커링(Currying)
    : 함수형 프로그래밍에서 자주 사용되는 기법
    : 다중 인수를 받는 함수를 여러 개의 단일 인수를 받는 함수들로 변환하는 방식
    : 함수를 여러 단계로 나누어 인수를 하나씩 처리 가능
           ⇒ 함수를 반환하는 함수 = 함수를 만드는 메타함수
// 일반적인 함수
function add(a, b) {
  return a + b;
}

// 커링된 함수
function curriedAdd(a) {
  return function(b) {
    return a + b;
  };
}

// 사용 예시
const add5 = curriedAdd(5);  // a = 5로 고정된 함수 반환
console.log(add5(10)); // 15

console.log(curriedAdd(3)(7)); // 10

2. 예외처리 (Exception Handling)

2.1 Try

: 예외가 발생할 수 있는 코드를 실행 : 예외가 발생하면 해당 코드 블록은 중단 → 제어권을 catch로 토스

2.2 catch

: Try에서 예외가 발생하면 해당 예외 처리

2.3 Finally

: 예외가 발생했든 발생하지 않았든 항상 실행

: 주로 리소스 정리 작업이나 클린업을 위해 사용

2.4 Throw

: 예외를 강제로 발생시킬 때,

: 발생한 예외는 catch에서 처리(현재 코드에서 처리 실패 시, 호출한 곳으로 예외 토스)


3. IIFE(Immediately Invoked Function Expression)

: “함수 정의부 + 함수 호출부” 한줄에 처리하는것

: 즉시 사용 함수

1) 기본형
(function(parameter) { ... })(argument)

2) 기본형 예시
(function() {
  console.log("IIFE 실행!");
})();

3) 화살표 함수형 예시
(() => {
  console.log("IIFE 실행!");
})(); // 이벤트 핸들링시 이용하던 그 모습이다,.

4. Closure

: 자신이 선언될 때의 환경(스코프)를 기억 → 함수가 외부 함수의 변수에 접근 가능하도록 Encapsulation 및 상태 관리

  • Enclose (여러번 호출 가능) : IIFE 와 달리 여러번 사용이 가능하여, 중앙 상태관리로 활용 가능
  • Variable Encapsulation : Lexical Scope 을 활용한 (함수 선언 시 주변 환경 박제) 변수 캡슐화
function createCounter() {
  let count = 0;  // 카운트 변수

  return {
    increment: function() {
      count++;
      console.log(count);
    },
    decrement: function() {
      count--;
      console.log(count);
    },
    getCount: function() {
      return count;
    }
  };
}

const counter = createCounter();
counter.increment();  // 1
counter.increment();  // 2
console.log(counter.getCount());  // 2
counter.decrement();  // 1

 

 


참조

ASAC 수업자료

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함