JavaScript 표현식(Expression)이란?
JavaScript에서 표현식(expression)이 무엇인지 알아보고, 어떤 단어들이 실제보다 더 복잡하게 들리게 만드는지 함께 살펴보겠습니다.
JavaScript에서 표현식이란 단순히 질문을 던지고 그 답으로 값을 받는 방법입니다. 그리고 그 답은 항상 단 하나의 값(single value)입니다.
예를 들어 다음 코드가 하나의 표현식입니다:
console.log(5 + 5)
// 결과: 10위 코드에서 일어나는 일을 대화처럼 풀어보면 다음과 같습니다:
당신이 묻습니다: "JavaScript야, 5 + 5는 얼마야?"
JavaScript가 대답합니다: "5 + 5는 10으로 평가됩니다."
즉, 표현식은 입력값(여기서는 5 + 5)의 결과, 곧 평가(evaluation) 결과를 얻는 방법입니다. '결과'와 '평가'는 같은 의미를 가진 다른 단어일 뿐입니다.
typeof 연산자를 사용한 또 다른 예시
JavaScript의 typeof 연산자를 활용한 표현식도 살펴보겠습니다:
console.log(typeof([]))
// 결과: object위 코드에서 우리는 JavaScript에게 "[](대괄호)의 타입은 무엇이니?"라고 묻습니다.
그러면 JavaScript는 "object"라고 대답합니다.
이것이 바로 JavaScript 표현식의 본질입니다. 질문하면 답을 얻고, 그 답은 항상 단 하나의 값의 형태로 돌아옵니다.
'표현식'이라는 단어가 어렵게 느껴지는 이유
놀라셨나요? 이 용어가 좀 더 복잡한 개념일 거라고 기대하셨나요?
그렇다면 당신만 그런 것이 아닙니다. 사전에서 'expression(표현)'의 정의를 확인해 보겠습니다:
- 자신의 생각이나 감정을 드러내는 행위.
- 특정 감정을 전달하는 사람의 표정.
독자 여러분은 어떠신지 모르겠지만, 위 두 가지 정의 중 어느 것도 앞선 코드 예제와 관련이 있어 보이지 않습니다.
다만 수학에서 'expression(식)'이라는 용어가 어떻게 쓰이는지 살펴보면 훨씬 와닿을 것입니다. 하지만 저처럼 모국어가 영어가 아니라면, 프로그래밍 맥락에서 처음 '표현식'이라는 말을 들었을 때 수학을 떠올렸을 가능성은 그리 높지 않았을 겁니다.
참고: 표현식과 문(Statement)의 차이
개념을 확실히 잡기 위해 짚고 넘어갈 점이 있습니다. 표현식이 값을 만들어내는 코드라면, 문(statement)은 작업을 지시하는 코드입니다. 예를 들어 if 문이나 for 문은 값으로 평가되지 않으므로 표현식이 아닙니다. 반면 5 + 5, typeof([]), 함수 호출 등은 모두 값으로 평가되는 표현식입니다. 이 차이를 이해하면 에러 메시지를 읽거나 코드 구조를 파악할 때 큰 도움이 됩니다.
마무리 생각
단어를 특정 맥락(여기서는 프로그래밍)과 연결 짓기 어려우면, 보통 기억하기도 더 어려워집니다. 이는 심리적인 장벽을 만들어 간단한 개념조차 이해하기 힘들게 만듭니다.
그래서 저는 늘 이렇게 말합니다. 코딩을 배울 때 기술 용어의 맥락상 의미를 익히는 것이 성공의 절반이라고요.
다행히 해결책은 간단합니다. 몸에 배일 때까지 반복하기만 하면 됩니다. 결국 프로그래밍 맥락 속에서는 표현식을 자연스럽게 프로그래밍과 연결 짓게 되고, 프로그래밍 밖에서는 '주장, 발표, 표정' 같은 의미로 연결하는 것처럼 말입니다.