참고: 이웅모 《모던 자바스크립트 Deep Dive》 5장 · MDN Grammar and types
“값이 뭐고 문이 뭐지?”에서 멈추면 이후 연산·함수가 전부 흐리다. 리터럴로 값을 만들고, 표현식이 값을 낳고, 문은 그 위에서 완료를 만든다. ASI(세미콜론 자동 삽입)는 함정 보너스.
flowchart LR
LIT[리터럴] --> VAL[값]
EXP[표현식] --> VAL
STMT[문] --> DONE[실행 완료]
VAL --> STMT
값은 식이 평가되어 생성되는 결과. 메모리에 들어가는 실체. 변수는 값을 가리키는 이름.
값을 생성하는 표기법. 1, 'hi', true, null, {}, [], /re/.
const n = 42;
const s = 'text';
const o = { a: 1 };
값으로 평가되는 문장 조각. 1+2, call(), x = 1(할당 표현식은 값으로 평가).
console.log(1 + 2);
const x = 3 * 4;
표현식은 값 → 다른 표현식에 끼워 넣을 수 있다.
프로그램을 구성하는 최소 실행 단위. 선언문·표현식 문·제어문·블록 등. 문은 “무엇을 하라”는 지시. 완료 값(completion)이 있지만 일상은 부수효과·흐름에 집중.
let a; // 선언문
a = 1; // 표현식 문
if (a) { console.log(a); }
JS는 많은 경우 세미콜론을 자동 삽입한다. 규칙이 직관과 어긋나면 버그.
function f() {
return
{ ok: true }
}
console.log(f()); // undefined — return 뒤에 ASI
a = b + c
(d + e).print()
// 한 줄로 붙어 해석될 위험
팀 규칙: 세미콜론 명시 또는 ASI-safe 스타일+린트.