일급 객체와 고차 함수
평가 (Evaluation)
코드가 계산되어 값을 만드는 과정
🧩 Evaluation
평가(Evaluation)는 프로그래밍에서 표현식이 실제로 실행되어 값(value)으로 바뀌는 전 과정을 포괄하는 용어이다. 단순히 수를 더하는 ‘계산(calculation)’보다 더 넓은 개념이기 때문에, 개발자들은 ‘평가’라는 표현을 쓴다.
구분 | 계산 (Calculation) | 평가 (Evaluation) |
---|---|---|
의미 | 수학적인 연산을 수행해 숫자 결과를 얻는 것 | 표현식(expression)이 실행되어 값(value)으로 바뀌는 과정 전체 |
예시 | 2 + 3 = 5 | x + 3 → x가 2일 때 → 2 + 3 → 5 |
범위 | 숫자 연산 중심 | 변수 참조, 함수 호출, 조건문 분기 등도 포함 |
즉, 평가는 단순한 수학 연산을 넘어, 코드의 표현식을 실제로 실행해 최종 값을 만들어내는 과정 전체를 의미한다.
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
- 값으로 다룰 수 있다.
- 변수에 담을 수 있다.
- 함수의 인자로 사용될 수 있다.
- 함수의 결과로 사용될 수 있다.
이런 특징 때문에 자바스크립트에서 함수를 고차 함수의 인자나 반환값으로 자유롭게 사용할 수 있다.