값은 식(표현식)이 평가되어 생성된 결과를 말한다. 평가란 식을 해석해서 값을 생성하거나 참조하는 것을 의미한다.
// 10 + 20은 평가되어 숫자 값 30을 생성한다.
10 + 20;
모든 값을 데이터 타입을 가지며, 메모리에 비트의 나열로 저장한다.
// 변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당된다.
let sum = 10 + 20
sum 변수에 할당되는 것은 10 + 20이 아니라 평가된 결과인 30이다. 따라서 10 + 20은 할당 이전에 평가되어 값으로 생성되어 변수에 저장된다.
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호('', "", ., [], {} 등)를 사용해 값을 생성하는 약속된 표기법이다.
//숫자 리터럴 3
3
위의 3은 단순히 아라비아 숫자가 아니라 숫자 리터럴이다. 사람이 이해할 수 있는 아라비아 숫자를 사용하여 숫자 리터럴 3을 코드에 기술하면 자바스크립트 엔진은 평가하여 숫자 값을 생성한다.
EX) 정수 - 100, 문자열 리터럴 - "Hello", 불리언 리터럴 - true 등등
표현식은 값으로 평가될 수 있는 문이다. 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다. 예시로 나온 리터럴 또한 값으로 평가되기 때문에 리터럴도 표현식이다.
let score = 100;
// 리터럴 100은 평가된 값을 생성하므로 표현식
let score = 50 + 50;
// 리터럴과 연산자로 이뤄져 있지만, 50 + 50도 평가되어
// 값 100을 생성하기 때문에 표현식이다.
score;
// 100 변수 값으로 평가된다. 값을 생성하지는 않지만
// 값으로 표현하기 때문에 표현식이다.
즉, 값으로 평가될 수 있는 문은 모두 표현식이다.
프로그램을 구성하는 기본 단위이자 최소 실행 단위. 문의 집합으로 이뤄진 것이 프로그램며, 문을 작성하고 순서에 맞게 나열한 것이 프로그래밍이다.
문은 토큰으로 구성된다.
토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다. 키워드, 연산자, 세미클론, 마침표 등 모든 요소들이 토큰이다.
문은 명령문이라고도 불리기도 하는데, 문이 실행되면 명령이 실행된다.
선언문, 할당문, 조건문 등으로 구분된다.
표현식은 문의 일부분일 수도 있고, 그 자체로 문이 될 수도 있다.
let x;
// 변수 선언문은 값으로 평가될 수 없어서 표현식이 아니다.
// x = 1 + 2는 표현식이면서 완전한 문이기도 하다.
x = 1 + 2;
이처럼 표현식인 문과 표현식이 아닌 문의 종류가 있는데, 표현식인 문은 값으로 평가될 수 있는 문이며, 표현식이 아닌 문은 값으로 평가될 수 없는 문을 말한다.
예를들어, 변수 선언문은 값으로 평가될 수 없다. 하지만 할당문은 값으로 평가될 수 있다. 따라서 표현식이 된다.