sandwe 2022. 7. 20. 21:21

식(표현식)이 평가되어 생성된 결과
평가: 식을 해석해서 값을 생성하거나 참조하는 것

모든 값은 데이터 타입을 가지며 메모리에 2진수(비트)의 나열로 저장된다. 따라서 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있다.

 

리터럴

사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법

값은 다양한 방법으로 생성할 수 있다. 가장 기본적인 방법은 리터럴을 사용하는 것이다. 자바스크립트 엔진은 코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성한다.

// 숫자 리터럴
10.50
1001 // 정수 리터럴
0b01000001 // 2진수 리터럴
0o101 // 8진수 리터럴
0x41 // 16진수 리터럴

// 문자열 리터럴
'Hello'
"World"

// 불리언 리터럴
true
false

// null 리터럴
null

// undefined 리터럴
undefined

// 객체 리터럴
{ name: 'Lee', gender: 'male' }

// 배열 리터럴
[ 1, 2, 3 ]

// 정규표현식 리터럴
/ab+c/

// 함수 리터럴
function() {}

 

표현식 (Expression)

값으로 평가될 수 있는 문(statement)
즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.

 

리터럴 자체가 표현식인 경우

var score = 100;

100은 사람이 이해할 수 있는 아라비아 숫자를 사용한 리터럴이다. 리터럴 100은 자바스크립트 엔진에 의해 평가되어 값을 생성하므로 리터럴은 그 자체로 표현식이다.

리터럴과 연산자로 이루어진 경우

var score = 50 + 50;

50 + 50이 평가되어 숫자 값 100을 생성하므로 표현식이다.

 

변수 식별자를 참조하는 경우

score; // -> 100

변수 식별자를 참조하면 변수 값으로 평가된다. 식별자 참조는 값을 생성하지는 않지만 값으로 평가되므로 표현식이다.

표현식은 값으로 평가된다. 이때 표현식과 표현식이 평가된 값은 같다(동치). 따라서 문법적으로 값이 위치할 수 있는 자리에는 표현식도 위치할 수 있다는 것을 의미한다.

1  + 2 = 3  <=> 표현식 = 값

 

문(Statement) (명령문)

프로그램을 구성하는 기본 단위이자 최소 실행 단위이고, 리터럴, 연산자(Operator), 표현식(Expression), 키워드(Keyword) 등으로 구성되며 세미콜론( ; )으로 끝나야 한다.

문은 여러 토큰으로 구성된다. 토큰은 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다. 문은 선언문, 할당문, 조건문, 반복문 등으로 구분할 수 있다.

var sum = 1+ 2;
// 문: var sum = 1 + 2;
// 토큰: var, sum, =, 1, +, 2, ;

 

세미콜론은 언제 붙여야 할까?

자바스크립트 엔진은 세미콜론(;)으로 문이 종료한 위치를 파악하고, 순차적으로 하나씩 문을 실행한다.
단, if문/ for문/ 함수 등의 코드블록 ({...}) 뒤에는 세미 콜론을 붙이지 않는다. 코드 블록은 문의 종료를 의미하는 자체 종결성을 갖기 때문이다.

 

표현식인 문과 표현식이 아닌 문

문에는 표현식인 문과 표현식이 아닌 문이 있다.
표현식인 문: 값으로 평가될 수 있는 문
표현식이 아닌 문: 값으로 평가될 수 없는 문