회고/Techit Frontend School 10기

[멋쟁이 사자처럼 프론트엔드 스쿨] 31일차 TIL - rest parameter, 함수의 기능, this, 재귀

kelly09 2024. 6. 9. 22:13

🍴 rest parameter

: 함수 매개변수 목록에서 남은 인수들을 배열로 모으는 방법. 함수가 가변 인수를 받아 처리할 수 있게 해줌.

function sum(...numbers) {
  return numbers.reduce((acc, current) => acc + current, 0);
}

console.log(sum(1, 2, 3)); // 6
console.log(sum(1, 2, 3, 4, 5)); // 15

🍴 함수의 두 가지 기능

1. 일반 함수

  • 함수 이름 직접 호출하여 실행
  • this 바인딩: 호출 맥락에 따라 다르게 바인딩. 기본적으로 전역 객체 참조, 객체의 메서드로 호출 시 해당 객체 참조.
  • 명시적으로 return 문 사용하지 않을 시 undefined 반환

2. 생성자 함수

  • 객체 인스턴스를 생성하기 위해 사용
  • 보통 첫 글자대문자로 정의, new 연산자와 함께 호출
  • this 바인딩: 명시적으로 다른 객체 반환하지 않을 시 새로 생성된 객체 반환

🍴 this의 역할

: 현재 실행 중인 함수나 메서드가 참조하는 객체를 가리키는 키워드. this의 값은 함수가 어떻게 호출됐는지에 따라 달라짐.

1. 전역 컨텍스트

  • 전역 컨텍스트에서 this는 전역 객체 참조
  • 브라우저 환경 - window, Node.js 환경 - global

2. 객체의 메서드 호출

  • 해당 메서드를 소유한 객체 참조

3. 생성자 함수

  • 새로 생성된 객체 참조

🍴 재귀(Recursion)

: 함수가 자기 자신을 호출하는 프로그래밍 기법.

  • 재귀 사용 시 복잡한 문제를 작은 문제로 나누어 쉽게 해결 가능

재귀 함수의 구조

  1. 기저 조건(base case): 재귀 호출 멈추고 결과 반환하는 조건
  2. 재귀 단계(recursive step): 함수가 자기자신을 호출하여 문제를 더 작은 부분으로 나눔
function factorial(n) {
  // 기저 조건: n이 0 또는 1일 때
  if (n === 0 || n === 1) {
    return 1;
  }
  // 재귀 단계: n * factorial(n - 1)
  return n * factorial(n - 1);
}

console.log(factorial(5)); // 120 (5 * 4 * 3 * 2 * 1)