
본 포스팅은 '모던 자바스크립트 Deep Dive'를 기반으로 공부한 내용을 정리한 것입니다.
문과 표현식을 구별하고 해석할 수 있다면 자바스크립트 엔진의 입장에서 코드를 읽을 수 있고 실행 결과를 예측하는데 도움이 된다.
값은 식이 평가되어 생성된 결과이다. 여기서 평가란 식을 해석해서 값을 생성하거나 참조하는 것.
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법이다.
| 리터럴 | 예시 | 
|---|---|
| 정수 리터럴 | 100 | 
| 2진수 리터럴 | 0b01000001 | 
| 문자열 리터럴 | 'Hello' | 
| 불리언 리터럴 | true, false | 
| null 리터럴 | null | 
| undefined 리터럴 | undefined | 
| 객체 리터럴 | { name: 'Lee', address: 'Seoul' } | 
| 배열 리터럴 | [1,2,3] | 
| 함수 리터럴 | function() {} | 
| 정규 표현식 리터럴 | /[A-Z]+/g | 
표현식은 값으로 평가될 수 있는 문이다. 즉, 값을 가지는 문으로써 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.
리터럴은 값으로 평가되므로, 표현식이다.
var score = 50 + 50; // 숫자값 100을 생성하므로 표현식이다.
score; // 식별자 참조, 값을 생성하지는 않지만 값으로 평가되므로 표현식이다.문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다. 문은 여러 토큰으로 구성된다. 토큰은 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다.
var sum = 1 + 2;var, sum, =, 1, +, 2, ; 모두 토큰이다.
먼저 정리하자면,
표현식은 값으로 평가될 수 있는 문이었고, 문은 최소 실행 단위이다.
표현식인 문은 값으로 평가될 수 있는 문이며, 표현식이 아닌 문은 값으로 평가될 수 없는 문을 말한다.
var x; // 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다.
x = 1 + 2; // 표현식인 문이다.여기서 표현식인 문은 값처럼 사용할 수 있다.
var foo = x = 1 + 2;