함수심화-02

이서림·2024년 7월 30일

JavaScript

목록 보기
21/28

콜백함수

  • 다른 함수에 인자로 전달되어 나중에 실행되는 함수
    function sum(x, y, 콜백함수){
      콜백함수(x + y);
      return x + y;
    }
    

    function documentWriter(s){
    document.write('콜백함수', s);
    }

    sum(10, 20, documentWriter);

    // map 의 사용을 통한 콜백함수
    let arr = [1, 2, 3, 4, 5];
    arr.map(제곱)

    function 제곱(x){
    return x ** 2
    }

    arr.map(x => x ** 2)

    // forEach의 사용을 통한 콜백함수
    let arr = [1, 2, 3, 4, 5];
    arr.forEach(e => console.log(e**2));

    function 제곱(x){
    console.log(x**2)
    }

재귀함수

  • 자기 자신을 호출하는 함수
  • 무한히 반복될 수 있기 때문에 보통 재귀 호출이 멈출 수 있는 종료조건을 체크해야 함.
  • 반복문으로 구현할 수 있는 것은 재귀함수로 모두 구현 가능.
  • 재귀함수로 구현 가능한 것은 반복문으로 대부분 구현 가능.
    function factorial(n) {
      if (n <= 1) return 1;
      return n * factorial(n - 1);
    }
    

    console.log(factorial(5)); // 120

즉시 실행함수

  • 정의되자마자 즉시 실행되는 함수
  • function scope를 이용하기 때문에 메모리 효율적
    // 익명 즉시 실행 함수
    (function () {
      let a = 1;
      let b = 2;
      return a + b;
    })();
    

    // 기명 즉시 실행 함수
    (function foo() {
    let a = 3;
    let b = 5;
    return a * b;
    })();

    foo(); // ReferenceError: foo is not defined
    // 어차피 실행하지 못해서 의미가 없음.
    // 메모리 효율적으로 관리하기 위해 바로 실행해야 하는 것들을 즉시 실행함수로 관리

클로저

  • 외부 함수의 변수에 접근할 수 있는 내부 함수
  • 클로저를 사용하면 특정 변수나 함수를 외부에서 접근할 수 없도록 숨길 수 있음.
    function outer() {
      let count = 0;
      return function() {
        return ++count;
      };
    }
    

    let counter = outer();
    console.log(counter()); // 1
    console.log(counter()); // 2

생성자 함수

  • 객체를 생성하는 템플릿 역할을 하는 함수
  • 일반 함수와 구분하기 위해 생성자 함수 이름 첫 글자는 대문자로 시작.
  • 반드시 'new' 연산자를 붙여 실행. new 연산자는 생성자 함수의 this 가 인스턴스를 바라보도록 만들어주는 역할.
  • 생성자 함수를 사용하는 이유
    • 동일한 프로퍼티를 가지는 객체 생성

    • prototype을 이용하여 메모리 효율을 높일 수 있음

      function Person(name, age) {
        this.name = name;
        this.age = age;
      }
      

      let person1 = new Person('김철수', 30);
      console.log(person1.name); // '김철수'

profile
꾸준한 열정으로 나아가는 프론트엔드 개발자

0개의 댓글