참고: 이웅모 《모던 자바스크립트 Deep Dive》 5장
리터럴은 값을 만드는 표기법이고, 표현식은 평가되어 값이 되는 식이며, 문은 실행 단위다. 표현식인 문과 아닌 문을 구분하는 게 핵심이다.
| 용어 | 한 줄 정의 |
|---|---|
| 리터럴 | 사람이 이해할 수 있는 표기로 값을 생성하는 방식 (10, 'hi', true, {}) |
| 표현식 | 평가되면 하나의 값이 되는 식. 리터럴·변수·연산·함수 호출 등 |
| 문(statement) | 프로그램을 구성하는 최소 실행 단위 |
| ASI | 세미콜론 자동 삽입. 줄바꿈 위치에 따라 의도치 않은 결과가 날 수 있음 |
엔진은 문을 위에서 아래로 실행한다. 어떤 문은 그 자체로 값이 되고(표현식 문), 어떤 문은 값으로 평가되지 않는다(선언문, if 문 등).
콘솔에서 var x = 1과 x = 1의 완료 값 느낌이 다르다. 할당 표현식은 값이 되고, 변수 선언문은 표현식이 아니다.
세미콜론을 생략하면 ASI가 넣어 주지만, return 다음 줄에 값을 두면 return;으로 끊겨 undefined가 반환된다.
10;
'hello';
const n = 1 + 2;
function f() {
return
1; // return; → undefined
}
console.log(f());
값이 생겼으니, 그 값이 어떤 데이터 타입인지로 이어진다.