개념을 이해한다는 것은 바로 용어를 정확히 이해하고 설명할 수 있다는 것이다. 이 챕터에서는 용어에 대한 개념을 자세히 다룬다.
값(Value)는 표현식(expression)이 평가(evaluate)되어 생성된 결과를 말한다.
// 10 + 20은 평가되어 숫자 값 30을 생성한다.
var sum = 10 + 20; // 30
위 예제에서 sum 변수에 할당되는 것은 10+20이 아니라 10+20이 평가된 숫자 Value인 30이다.
리터럴(literal)은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법이다.
// 숫자 리터럴 3
3
위 예제에서 숫자 3을 단순히 아라비아 숫자라고 부를 수 있으나, 이를 숫자 literal로 부르기로 한다.
자바스크립트 엔진은 코드가 실행되는 시점인 런타임에 literal을 평가해 값을 생성한다.
리터럴은 값을 생성하기 위해 미리 약속한 표기법이라고 할 수 있다.
리터럴 | 예시 |
---|---|
정수 리터럴 | 100 |
부동소수점 리터럴 | 10.5 |
2진수 리터럴 | 0b1000001 |
8진수 리터럴 | 0o101 |
16진수 리터럴 | 0x41 |
문자 리터럴 | 'Hello' |
불리언 리터럴 | true |
null 리터럴 | null |
undefinded 리터럴 | undefinded |
객체 리터럴 | { name: 'Lee' } |
배열 리터럴 | [ 1,2,3 ] |
함수 리터럴 | function() {} |
정규 표현식 리터럴 | /[A-Z]+/g |
표현식(expression)은 값으로 평가될 수 있는 문(statement)이다. 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.
표현식을 평가한다는 것은 앞서 설명했다. 기존 값을 참조한다는 것은 무엇일까?
var score = 50 + 50;
score;
위의 예제를 보면 첫번째 줄은 50+50이 평가되어 숫자 Value 100를 생성하므로 expression , 두번째 줄은 값을 생성하지는 않지만 기존 값을 참조하므로 expression이다.
자바스크립트를 공부함에 있어 statement와 expression이라는 용어가 자주 등장할 텐데, 코드의 품질을 위해 두개를 잘 이해해야 한다.
문(statement)은 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.
문은 선언문,할당믄,조건문,반복문 등으로 구분할 수 있다.
// 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다
var x;
// x = 1 + 2는 표현식이면서 완전한 문이기도 하다
x = 1 + 2
문은 표현식인 문과 표현식이 아닌 문이 있다. 둘을 구분하는 가장 간단한 방법은 변수에 할당해 보는 것이다. 표현식은 문은 값으로 평가되므로 변수에 할당할 수 있다. 하지만 표현식이 아닌 문은 값으로 평가할 수 없으므로 에러가 난다.
// 표현식이 아닌 문은 값처럼 사용할 수 없다.
var foo = var x; // SyntaxError: Unexpected token var
// 변수 선언문은 표현식이 아닌 문이다.
var x;
// 할당문은 그 자체가 표현식이지만 완전한 문이기도 하다.
x = 100;