값(value)은 식(표현식, expression)이 평가(evaluate)되어 생성된 결과를 말한다.
10 + 20 // 30, 10+20은 평가되어 숫자 값 30을 생성한다.
let sum = 10 + 20 // 변수에는 10+20이 평가되어 생성된 숫자 값 30이 할당된다.
// sum이 기억하는 메모리 공간에 저장된 것은 30이다.
그렇다면 10+20은 언제 값이 생성된 걸까?
리터럴은 사람이 이해할 수 있는 문자 똔느 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.
표현식은 값으로 평가될 수 있는 문(statement)이다. 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.
문(statement)은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다.
- TC39(ECMAScript 기술 위원회), Add interesting Cases of Automatic Semicolon Insertion
변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다.
그러나 리터럴(정수, 문자열, 부동소수점 등..)은 모두 표현식이다.
let name = let y;
// SyntaxError: Unexpected token let
(이 글은 모던자바스크립트 Deep Dive를 요약 및 정리한 내용입니다.)