참고: 이웅모 《모던 자바스크립트 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());

헷갈리기 쉬운 포인트 / 함정

다음 장으로 이어지는 한 줄

값이 생겼으니, 그 값이 어떤 데이터 타입인지로 이어진다.