값은 표현식이 평가되어 생성된 결과이다. 여기서 '평가'란
식
을 해석해서 값을 '생성
'하거나 '참조
'하는것을 말한다. 생성과 할당은 다르다. 변수에 값을 할당하기 위해서는 할당 이전에 평가되어 값을 생성 해야한다.
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다. 숫자 리터럴을 사용해 평가된 숫자 값 3을 생성한다. 런타임에 리터럴을 평가해 값이 생성된다. 리터럴을 사용해 다양한 Data type의 값을 생성 할 수 있다.
표현식은 값으로 평가될 수 있는 문이며 표현식과 표현식이 평가된 값은 동등한 관계이다.
var score = 100;
여기서 100은 리터럴이며, js 엔지에 의해 평가되어 값을 생성하므로 리터럴 그 자체로 표현식이된다.
score; //->100
변수 식별자를 참조하면 변수 값으로 평가된다.
표현식은 리터럴, 식별자, 연산자, 함수 호출 등의 조합으로 이루어질 수 있다.
//리터럴 표현식
10
'hello'
//식별자 표현식(선언이 이미 존재한다고 가정)
sum
person.name
arr[0]
//연산자 표현식
10 + 20
sum = 10
sum !== 10
//함수/메서드 호출 표현식(선언 이미 존재한다고 가정)
square()
person.getName()
프로그램을 구성하는 기본 다위이자 최소 실행 단위. 문은 컴퓨터에 내리는 명령이다. 문에는 표현식인 문과 표현식이 아닌 문이 있다. 표현식인 문은 값으로 평가될 수 있는 문이다. 값으로 평가 될 수 있다는 것은 곧 변수에 할당할 수 있다는 것.
var foo = x = 100;
크롬 개발자 도구에서 표현식이 아닌 문을 실행하면 언제나 undefined를 출력한다. = 완료값. 반면 표현식인 문을 실행하면 언제나 평가된 값을 반환한다.