프로그래밍, 특히 표현식(Expression)의 맥락에서 **평가(Evaluation)**란, 작성된 코드(주로 표현식)를 컴퓨터(JavaScript 엔진과 같은 인터프리터 또는 컴파일러)가 해석하고 실행하여 최종적인 **하나의 값(Value)**으로 도출해내는 과정을 의미한다.
❓평가라는 말 자체가 감정평가와 같이 어떤 대상의 가치를 확인하는 어감이 있어서 헷갈릴 수 있지만 프로그래밍에서의 평가는 결과의 도출, 값의 산출같은 의미로 사용된다.
⚙️ 평가 과정 이해하기
간단히 말해, "평가한다"는 것은 "계산해서 결과를 낸다"와 비슷하다.
- 해석(Parsing): 엔진은 먼저 코드 조각의 의미를 이해한다. 예를 들어 x + 5라는 코드를 보면, 'x라는 변수의 값과 숫자 5를 더하라'는 의미로 해석한다.
- 실행(Execution): 해석된 의미에 따라 실제 연산을 수행한다.
- 변수(x)가 있다면, 현재 메모리에서 x가 가지고 있는 값을 찾아온다(Lookup).
- 필요한 연산(덧셈 +)을 수행한다.
- 결과 도출: 연산이 완료되면 최종 결과인 하나의 값이 생성된다. 예를 들어 x가 10이었다면, x + 5는 최종적으로 숫자 15라는 값으로 평가된다.
💡 표현식과 평가의 관계
- "표현식이 값으로 평가된다"는 말은, 해당 표현식 코드에 대해 위와 같은 평가 과정이 일어나서 결과적으로 하나의 값이 나온다는 의미다.
- 모든 표현식은 평가될 수 있다. 평가 결과는 그 표현식이 나타내는 최종적인 값이 된다.
🟰 평가 예시:
- 100: 숫자 리터럴 100은 그 자체로 값 100으로 평가된다. (가장 단순한 평가)
- "Hello": 문자열 리터럴 "Hello"는 값 "Hello"로 평가된다.
- userCount: 변수 userCount는 현재 userCount 변수에 저장된 값(예: 숫자 50)으로 평가된다. (메모리 조회 필요)
- 5 * 8: 곱셈 연산 5 * 8은 계산 과정을 거쳐 숫자 값 40으로 평가된다.
- isActive && userCount > 0: 논리 연산 isActive && userCount > 0는 isActive 변수 값 조회, userCount 값 조회 및 비교 연산(>), 논리곱 연산(&&)을 거쳐 최종적으로 true 또는 false라는 불리언 값으로 평가된다.
- getUserName(): 함수 호출 getUserName()은 getUserName 함수 내부의 코드를 실행하고, 함수가 반환(return)하는 값으로 평가된다. (함수 실행 과정 포함)
- { name: "Alice" }: 객체 리터럴 { name: "Alice" }는 속성을 가진 새로운 객체 값으로 평가된다.
문(Statement)과의 차이점
- 평가라는 용어는 주로 표현식과 관련하여 사용되는데, 이는 표현식의 주된 역할이 값을 생성하는 것이기 때문이다.
- 문(Statement) 역시 실행(Execute)되지만, 문의 주된 역할은 값을 생성하는 것보다는 동작을 수행하는 것이다(예: let x;는 변수를 선언하는 동작, if (...)는 조건에 따라 흐름을 제어하는 동작). 물론 문 내부에서 값을 만들어내기 위해 표현식을 사용한다.
결론적으로, **평가(Evaluation)**는 코드를 실행하여 그 코드 조각이 나타내는 궁극적인 값을 찾아내는 핵심적인 연산 과정이다.
'프로그래밍 > 개념 뽀개기' 카테고리의 다른 글
무한스크롤 웹페이지에서 페이지란 무엇일까? (0) | 2025.04.01 |
---|---|
✨ 비트 연산자 (Bitwise Operators)란 무엇인가? (0) | 2025.03.29 |
✨ JavaScript에서 짝수, 홀수 판별 방법 (0) | 2025.03.29 |
✨ 표현식(Expression) 개념, 목적, 예시 (0) | 2025.03.29 |
인스턴스란 무엇인가? (0) | 2025.03.29 |