Home Java Script | 함수와 일급 객체
Post
Cancel

Java Script | 함수와 일급 객체

목차

함수와 일급 객체 🌊

  1. 일급 객체가 뭔가요?
    다른 객체에 일반적으로 적용 가능한 연산을 모두 지원하는 객체로 함수를 값으로도 저장할 수 있고 변수에 넣어줄 수 있으며, 리턴값으로 쓰일 수도 있어야 일급객체라고 부른다.
  2. 자바스크립트에서 함수가 일급 객체라면, 일급 객체로 뭘 할 수 있나요?
    다른 함수를 인수로 전달 받을 수 있기때문에 고차함수를 만들고 콜백을 사용할 수 있다.
  3. 꼬리 질문) 함수형 프로그래밍이 뭔가요? 🌊🌊
    부수 효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이는 프로그래밍의 새로운 패러다임으로 거의 모든 것을 순수함수로 나누어 문제를 해결한다고 볼 수 있다.
  4. 꼬리 질문) 순수 함수가 뭔가요? 일반 함수와는 어떤 차이가 있죠? 🌊🌊
    순수 함수는 부수효과가 없는 함수로 외부에 영향을 끼치지 않는 함수이고 비순수 함수는 부수효과가 발생하여 외부에 영향을 주는 함수이다.

함수와 일급 객체

  1. 일급 객체가 뭔가요?
  2. 자바스크립트에서 함수가 일급 객체라면, 일급 객체로 뭘 할 수 있나요?

    • 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체(사용할 때 다른 요소들과 아무런 차별이 없음)
    • 모든 일급 객체는 변수나 데이터에 담을 수 있어야 함(변수에 할당)
      • 함수 표현식으로 자유롭게 대입 가능
        1
        2
        3
        
        const hello = function () {
        console.log("Hello World");
        };
        
    • 모든 일급 객체는 함수의 파라미터로 전달 할 수 있어야 함(다른 함수를 인자로 전달받음)

      • 콜백 함수 형태로 자유롭게 전달 가능

        1
        2
        3
        4
        5
        6
        7
        8
        9
        
        const hello = function () {
          console.log("Hello World");
        };
        
        function print(func) {
          func();
        }
        
        print(hello); // hello(콜백함수)를 인자로 받는 print는 고차함수
        
    • 모든 일급 객체는 함수의 리턴값으로 사용할 수 있어야 함

      1
      2
      3
      4
      5
      6
      7
      
      function add(num1) {
        return function (num2) {
          return num1 + num2;
        };
      }
      
      add(3)(4); // 7
      


  3. 꼬리 질문) 함수형 프로그래밍이 뭔가요?

    • 부수 효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이는 프로그래밍 패러다임(거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법)
    • 특징

      • 입출력이 순수해야함(순수함수) : 반드시 하나 이상의 인자를 받고, 받은 인자를 처리하여 반드시 결과물을 돌려주어야함
      • 부작용(부산물)이 없어야함 : 바꾸고자하는 변수 외에는 바뀌어서는 안됨(원본 데이터의 불변성)
      • 함수와 데이터를 중점으로 생각함
      • 대표적인 메소드 : map, filter, reduce

    * 부수효과는 아래와 같은 변화가 발생하는 작업을 의미함

    • 변수의 값이 변경됨
    • 자료 구조를 제자리에서 수정함
    • 객체의 필드값을 설정함
    • 예외나 오류가 발생하며 실행이 중단됨
    • 콘솔 또는 파일 I/O가 발생함

  4. 꼬리 질문) 순수 함수가 뭔가요? 일반 함수와는 어떤 차이가 있죠?

    • 비순수 함수 : 외부 상태에 의존하거나 외부 상태를 변경하는, 즉 부수 효과가 있는 함수
    • 순수 함수 : 어떤 외부 상태에 의존하지도 않고 변경하지도 않는, 즉 부수 효과가 없는 함수

      • 동일한 입력에는 항상 같은 값을 반환해야 하는 함수
      • 함수의 실행이 프로그램의 실행에 영향을 미치지 않아야 하는 함수
      • 함수 내부에서 인자의 값을 변경하거나 프로그램 상태를 변경하는 Side Effect가 없는 것

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        
        //비순수함수 : add라는 함수 안에서 전역으로 선언된 변수인 num을 참조
        let num = 1;
        
        function add(a) {
          return a + num;
        }
        
        // 순수함수 : 프로그램 실행에 영향을 미치지 않고 입력 값에 대해서만 값의 변환이 있음
        function add(a, b) {
          return a + b;
        }
        
        const result = add(2, 3);
        
        • 순수 함수는 프로그램의 변화 없이 입력 값에 대한 결과를 예상 할 수 있어 테스트가 용이함






출처

일급 객체
일급객체란? 1
일급객체란? 2
함수형 프로그래밍
순수함수 1
순수함수 2

This post is licensed under CC BY 4.0 by the author.

Java Script | 생성자 함수에 의한 객체 생성

Java Script | async await