- 값(value)
값은 식(표현식)이 평가되어 생성괸 결과를 말한다.
평가(evaluate)는 식(표현식)을 해석해 값을 생성 또는 참조하는 것이다.
const foo = 10 + 20;
위 예의 경우 foo라는 변수에 10 + 20이 아닌, 10 + 20의 결과인 30이 할당된다.
10 + 20 이라는 표현식의 평가 결과인 30이 값이다.
- 리터럴(literal)
사람이 이해할 수 있는 문자나 약속된 기호로 값을 생성하는 표기법이다.
리터럴에는
정수, 부동소수점, 2진수, 8진수, 16진수, string, boolean, null, undefined, object, array, function, 정규표현식 등의
다양한 data type이 존재한다.
자바스크립트 엔진은 코드가 실행되는 시점인 'runtime'에
리터럴을 평가하여 값을 생성한다.
- 표현식(expression)
값으로 평가될 수 있는 문(statement)이다.
위 값에 대한 설명처럼, 표현식이 평가되면 새로운 값을 생성하거나,
기존의 값을 참조하게 된다.
const foo = 100;
위 예에서 100은 리터럴이다.
리터럴 100은 자바스크립트 엔진에 의해 평가되어 값을 생성하기 때문에
리터럴 자체로 표현식이다.
const bar = 50 + 50;
위의 경우 50 + 50은 평가되어 100이라는 값을 생성하므로
50 + 50 역시 표현식이다.
bar;
bar를 참조하면 100이라는 값을 가리킨다.
식별자의 참조는 값을 생성하지는 않지만, (100이라는) 값으로 평가되므로
역시 표현식이다.
!! 값으로 평가될 수 있는 모든 문은 표현식이다.
- 문(statement)
문은 프로그램의 기본 구성단위이며, 최소 실행단위이다.
문의 집합이 프로그램이며,
문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍이다.
토큰은 문법적인 의미를 가지면서,
문법적으로 더 이상 나눌 수 없는 코드의 기본요소를 의미한다.
const foo = 2 + 3;
여기서 const, foo, =, 2, +, 3, ; 모두가 토큰이다.
문은 토큰들로 구성된다.
문은 선언문, 할당문, 조건문, 반복문 등으로 구분할 수 있다.
선언과 할당문은 변수 선언, 값 할당을 한다.
조건문을 실행하면, 지정 조건에 따른 코드블록이 결정되어 실행되며,
반복문을 실행하면 특정 코드블록이 반복실행된다.
- 표현식인 문 vs 표현식이 아닌 문
표현식인 문과 표현식이 아닌 문의 구별법은,
변수에 할당해 보는 것이다.
표현식인 문은 값으로 평가되기 때문에, 변수에 할당할 수 있다.
표현식이 아닌 문은 값으로 평가할 수 없기에
변수에 할당하면 syntaxError가 발생한다.
변수 선언문은 표현식이 아닌 문이다.
할당문은 그 자체로 표현식이지만 완전한 문이므로, 표현식인 문이다.
const foo;
변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다.
개발자도구에서, 표현식이 아닌 문을 실행하면 언제나 undefined를 리턴한다.
이것을 완료값이라 하며, 완료값은 표현식의 평가결과가 아니다.
그러므로 변수에 할당할 수 없고, 참조할 수도 없다.
반대로, 표현식인 문을 실행하면 언제나 평과된 값을 리턴한다.
'Web開発 > JavaScript ES6' 카테고리의 다른 글
매니지드 언어와 언매니지드 언어 (0) | 2023.01.03 |
---|---|
가비지 콜렉터 (0) | 2023.01.03 |
변수와 식별자 (0) | 2022.11.10 |
JS_ES6_1. var키워드와 let키워드 (0) | 2019.07.27 |
JavaScript ES6 포스팅 (0) | 2019.07.27 |