Skip to content

일급 객체와 고차 함수

평가 (Evaluation)

코드가 계산되어 값을 만드는 과정

🧩 Evaluation

평가(Evaluation)는 프로그래밍에서 표현식이 실제로 실행되어 값(value)으로 바뀌는 전 과정을 포괄하는 용어이다. 단순히 수를 더하는 ‘계산(calculation)’보다 더 넓은 개념이기 때문에, 개발자들은 ‘평가’라는 표현을 쓴다.

구분계산 (Calculation)평가 (Evaluation)
의미수학적인 연산을 수행해
숫자 결과를 얻는 것
표현식(expression)이 실행되어 값(value)으로 바뀌는 과정 전체
예시2 + 3 = 5x + 3 → x가 2일 때 → 2 + 35
범위숫자 연산 중심변수 참조, 함수 호출, 조건문 분기 등도 포함

즉, 평가는 단순한 수학 연산을 넘어, 코드의 표현식을 실제로 실행해 최종 값을 만들어내는 과정 전체를 의미한다.

js
const x = 10;
const y = x * 2 + 1;
  • x * 2 + 1;이라는 표현식이 평가되어 21이라는 값을 만들어 낸다.
    이 전체 과정을 Evaluation이라고 부른다.

함수형 프로그래밍에서 Evaluation이 중요한 이유

함수형 프로그래밍에서는 "언제", "어떻게" 평가할지가 핵심 주제다.
대표적인 평가 전략으로는 다음과 같은 방식이 있다:

  • 즉시 평가(Eager Evaluation)
  • 지연 평가(Lazy Evaluation)

이러한 전략들은 평가 시점을 다루며, 함수형 프로그래밍의 동작 방식과 성능에 큰 영향을 준다.

일급 (First-Class Object)

js
const a = 10;

// 함수도 값처럼 변수에 할당할 수 있다.
const add10 = (a) => a + 10;

// 함수는 다른 함수에 인자로 전달할 수 있고
add10(a);

// 함수의 실행 결과도 값이 되어 변수에 담을 수 있다.
const r = add10(a);
console.log(r); // 20
  • 값으로 다룰 수 있다.
  • 변수에 담을 수 있다.
  • 함수의 인자로 사용될 수 있다.
  • 함수의 결과로 사용될 수 있다.

이런 특징 때문에 자바스크립트에서 함수를 고차 함수의 인자나 반환값으로 자유롭게 사용할 수 있다.