코딩을 하다보면 표현식과 문(명령문, 선언문 등)이라는 단어를 꽤 들어봤을 것이라고 생각한다.
간단하게 그 내용을 정리해 보았다.
값은 식이 평가되어 생성된 결과를 말한다. 평가란 식을 해석해서 값을 생성하거나 참조하는 것을 의미한다.
10 + 20;
위의 코드는 평가되어 30이라는 숫자 타입의 값을 생성한다.
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.
3 // 숫자 리터럴
'hello' // 문자열 리터럴
true // boolean 리터럴
이런 식으로 우리가 변수에 값을 할당할 때 사용하는것이 리터럴이다.
표현식은 값으로 평가될 수 있는 문이다.
앞서 설명한 리터럴도 값으로 평가될 수 있기 때문에 표현식이다.
예를 들어보는게 좋을 것 같다.
var value = 50; // 50은 리터럴이므로 표현식이다.
value; // 변수 식별자를 참조한다. 값을 생성하지는 않지만 값으로 평가되므로 표현식이다.
문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다. 문은 토큰 단위로 나누어져 있다.
var value = 50 + 20;
여기서 var, value, =, 50, +, 20, ;
으로 문을 나누어볼 수 있다. 이 조각 하나하나가 바로 토큰이다.
var x; // 변수 선언문
x = 5; // 할당문
function foo () {} // 함수 선언문
...
값으로 평가되는 모든 문들은 표현식이라고 했다.
그렇다면 값으로 평가되지 않는 문도 있을까? 당연히 있다.
var value;
위의 문은 값으로 평가될 수 없다. 리터럴을 할당한 것도 아니고 있던 변수를 참조하는 것도 아니기 때문이다.
가장 간단하게 표현식이 아닌 문을 확인할 수 있는 방법이 있다. 변수에 할당되는지를 확인해보면 된다.
var data = var value;
위의 코드는 오류를 발생시킨다. var value;
는 값으로 평가될 수 없기 때문에 변수에 할당할 수 없다.
이런 식으로 표현식과 표현식이 아닌 문을 구분할 수 있다.