현재까지 책에 등장한 개념은 문, 표현식, 값이 등장했다.
1 + 2; // 표현식이 평가되어 3이라는 값을 생성한다.
표현식이 평가되어 생성된 3이라는 값이 저장된 메모리 공간을 식별하기 위해 변수를 사용한다.
var val = 1 + 2;
표현식(expression)은 값으로 평가될 수 있는 문(statement)이다. 표현식이 평가(evaluate)되면 새로운 값을 생성하거나 기존의 값을 참조한다.(리터럴(literal)또한 값으로 평가된다. 즉 리터럴도 표현식이다.)
값으로 평가될 수 있는 문은 모두 표현식이다.
// 리터럴(literal) 표현식의 예시
// 선언이 이미 존재한다고 가정
var num = 100; // 리터럴(literal)은 자바스크립트 엔진에 의해 평가되어 값을 생성하므로 리터럴 그 자체로 표현식이다.
// 식별자 표현식
sum
person.age
arr[1]
//연산자 표현식
10 + 20
sum = 20
sum !== 10 // true || false 의 값을 생성하는 표현식(expression)
//함수/ 메서드 호출 표현식(선언이 이미 존재한다고 가정)
squre()
person.getAge()
2) 리터럴(literal)은 그 자체로 자바스크립트 엔진에 의해서 평가되어 값을 생성하는 표현식(expression)이다.
3 // 숫자 리터럴이다. 사람이 이해할 수 있는 아라비아 숫자를 사용해 숫자 리터럴3을 코드에 기술하면 자바스크립트 엔진이 이를 평가해 숫자3을 생성한다.
리터럴의 평가 순간은 자바스크립트 엔진이 코드를 실행하는 시점인 runtime에 리터럴을 평가한다.
문(statement)은 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.
문(statement)의 구성요소는 token으로 구성되어있다. token은 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다.
문은 명령문이라고도 한다. 이는 컴퓨터에 내리는 명령문이다.
문(statement)의 구분은 선언문, 할당문(value 할당), 조건문(지정한 조건에 따라 실행할 코드 블록{...} 이 결정 & 실행된다.), 반복문(특정 코드 블록이 반복 실행된다) 등으로 구분가능하다.
//변수 선언문
var x;
//할당문
x = 10;
//함수 선언문
function foo() {}
//조건문
if (x > 1) { console.log(x); }
//반복문
for (var i = 0; i < 2; i++) { console.log(i); }
var x; //선언문의 경우 값으로 평가될 수 없으므로 표현식이 아니다.
x = 100; //할당문은 표현식이면서 문이다.
구분하는 가장 간단한 방법은 변수에 할당해보는 것이다
이처럼 표현식인 문은 값처럼 사용할 수 있다.
요약하자면 literal 은 그자체로 자바스크립트 엔진에 의해서 평가되어 값을 가지는 표현식이다. 사람이 이해할 수 있는 표기법으로 값을 생성하는 표현식이다.
문(statement)은 token 으로 이루어진 프로그램의 구성하는 기본단위이자 최소 실행단위이다.
표현식(expression) 은 문으로 이루어져 값으로 평가될 수 있는 문이다. 표현식이 평가되게 되면 새로운 값을 생성하거나 기존 값을 참조한다.
값(value)는 표현식이 평가(evaluate)되어 생성된 결과를 말한다.