🍧값(value): 표현식이 평가되어 생성된 결과를 말합니다.
Q. 평가가 뭔가요?
A. 식을 해석해서 값을 생성하거나 참조(읽기)하는 것을 의미합니다.
예제
var sum = 10 + 20
변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당됩니다.
🍧리터럴(literal): 사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳 등) 또는 미리 약속된 기호('',{},// 등)로 표기한 코드입니다.
값을 표기하는 가장 기본적인 방법입니다.
리터럴 값을 코드로 쓰면 자바스크립트 엔진은 이를 평가해 값을 생성합니다.
🍧표현식(expression)은 값으로 평가될 수 있는 문(statement)입니다.
값으로 평가될 수 있는 문은 모두 표현식입니다.
var score = 100;
리터럴 100은 엔진에 의해 평가되어 값을 생성하므로 그 자체로 표현식입니다.
10 + 20
sum = 10
sum !== 10
//선언이 이미 존재한다고 가정
sum
person.name
arr[1]
//선언이 이미 존재한다고 가정
square()
person.getName()
❗ 표현식과 표현식의 평가된 값은 동등한 관계입니다. 즉, 표현식은 값처럼 사용할 수 있습니다.
🍧문(statement): 프로그램을 구성하는 기본 단위이자 최소 실행 단위입니다. (=명령문)
문의 집합으로 이루어진 것이 바로 프로그램입니다.
문은 여러 토큰으로 구성됩니다.
❗ 여기서 토큰(token)이란? : 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미합니다.
이 둘을 구별하는 가장 쉬운 방법은 변수에 할당해 보는 것입니다.
var foo = var x; //SyntaxError: Unexpected token var
변수 선언문은 값으로 표현될 수 없으므로 표현식이 아닙니다.
x = 100;
할당문은 값으로 표현되므로 표현식입니다.
var foo = x = 100;
console.log(foo); //100
표현식인 문은 값처럼 사용할 수 있습니다.
크롬 개발자 도구에서 표현식이 아닌 문을 실행하면 undefined를 출력합니다. 이를 완료값이라고 합니다.
표현식인 문을 실행하면 평가된 값을 반환합니다.