값
값은 표현식이 평가되어 생성된 결과를 말한다.
모든 값은 데이터타입을 가지며 메모리에 2진수, 즉 bit의 나열로 저장된다.
리터럴
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.
자바스크립트에서 3은 단순히 아라비아 숫자 3이 아닌 숫자 리터럴이다.
리터럴 표기법으로 다양한 종류의 데이터타입의 값을 생성할 수 있다.
표현식
표현식은 값으로 평가될 수 있는 문이다.
var score = 100;
위에 코드의 리터럴은 100이며 그 자체로 표현식이다.
var score = 50+50;
위처럼 리터럴과 연산자로 이루어져도 50+50이 평가되어 값 100이 생성되므로 표현식이다
score; // -> 100
변수를 참조하면서 변수 값으로 평가되므로 표현식이다.
//리터럴 표현식
10
'hello'
//식별자 표현식(선언이 됐다고 가정)
sum
person.name
arr[1]
//연산자 표현식
10+10
sum = 10+10
sum !== 10
//함수,메서드 호출 표현식
square()
person.getName()
즉 값으로 평가될 수 있는 문은 모두 표현식이다.
함수나 메서드 또한 최소한 undefined가 반환되기에 표현식이다
문
문은 프로그램을 구성하는 기본 단위이자 최소실행 단위이다.
문은 여러 토큰으로 구성되는데 토큰이란 문법적인 의미를 가지며, 더이상 나눌수 없는 코드의 기본 요소를 의미한다.
문은 명령문이라고도 하며 선언문, 할당문, 조건문, 반복문 등으로 구분할 수 있다.
표현식인 문과 표현식이 아닌 문
표현식은 문의 일부일 수도 있고 그 자체로 문이 될 수도 있다.
var x; //선언문만으론 값으로 평가 될 수 없으므로 표현식이 아님
x = 1 + 2; //값으로 표현되는 완전한 문이다이면서 표현식이다
표현식인 문과 표현식이 아닌 문을 구별하는 간단한 방법은 변수에 할당해 보는 것이다.
즉 값으로 평가 될 수 있는 문만이 표현식에 해당된다.