I code, therefore I exist.

웹 프론트 엔드 개발을 공부하고 있는 Ocean이라고 합니다. 만나서 반갑습니다.

WEB/JAVASCRIPT

값, 리터럴, 식, 문 개념 정리

Ocean 2022. 11. 29. 21:42

javascript를 시작하기에 앞서, 앞으로 나올 다양한 개념들을 설명하기 전에

기본적인 용어 부터 짚고 넘어갈 필요가 있다고 본다.

그렇기 때문에 자바스크립트의 가장 기본적인 개념인 값, 리터럴, 식, 문의 정의를 정리해볼 것이다.

1.  값 (Value) 

값(value)은 식(혹은 표현식)이 평가되어 생성된 결과를 말한다.


let sum = 10 + 20;

 

위 예제를 보면,

 

변수 sum에 들어가는 것은 10 + 20이 아닌 10 + 20이라는 표현식이 평가된 30이 할당된다.

이렇듯 변수는 하나의 값을 저장하기 위해 확보된 메모리 공간 자체 또는 메모리 공간을 식별하기 위해 붙인 이름이며,

모든 값은 데이터 타입(자료형)을 가지며 다양한 방법으로 생성할 수 있다.

 

위 예제처럼 식으로 값을 만들 수 있지만, 가장 기본적인 방법은 리터럴(Literal)로 만드는 것이다.

 

2.  리터럴 (Literal) 

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


자바스크립트의 다양한 리터럴 타입

let number = 30; // 정수 리터럴 30을 변수 number에 할당

 

위 예제의 30은 단순한 아라비아 숫자인 30이 아니라, 숫자 리터럴 30이다.

사람이 이해할 수 있는 아라비아 숫자를 이용해 자바스크립트에게 정수형 30이라고 알려주는 것이다.

이처럼 리터럴이란 미리 약속된 표기법으로 자바스크립트 엔진으로 다양한 값들을 생성할 수 있게 도와주는 것이다.

 

3.  표현식 (Expression) 

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


100 // 정수형 리터럴이자 표현식
let score = 50 + 50; 
score // 변수 score는 100으로 평가되기 때문에 score는 곧 표현식

 

앞서 살펴본 리터럴은 값으로 평가된다. 따라서 리터럴은 표현식이다.

또한 score는 정수형과 연산자로 조합되어 100이라는 값이 할당되었다.

여기서 50 + 50은 100이라는 값으로 평가되기 때문에 표현식이며,

변수 score는 100이라는 값으로 평가되기 때문에 표현식이다.

 

따라서 값으로 평가될 수 있는 문은 모두 표현식이다!!

 

4.  문 (Statement) 

문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.


문은 또한 명령문이라고도 부른다. 즉, 문은 컴퓨터에 내리는 명령이다.

 

var x; // 변수 선언문
x = 5; // 할당문
function foo () {} // 함수 선언문
if(x>1) {console.log(x);} // 조건문
for (let i=0;i<10;i++){console.log(i);} // 반복문

 

앞서 말한 표현식의 설명은 "값으로 평가될 수 있는 문은 표현식"이라고 하였다.

하지만 값으로 평가될 수 없는 문도 있다. 이를 다시 말하면 표현식이 아닌 문이라고 할 수 있다.

 

따라서 문은, 표현식인 문과 표현식이 아닌 문으로 나눌 수 있다.

 

다소 헷갈릴 수 있지만 이 둘을 구별하는 가장 간단하고 명료한 방법은 변수에 할당해 보는 것이다. 

 

var foo = var x; // Error
var x; // 표현식이 아닌 문
x = 100; // 할당문은 그 자체가 표현식이지만 완전한 문이기도 하다. 즉, 할당문은 표현식인 문이다.
var foo = x = 100; // x = 100은 할당문인 동시에 표현식이기도 해서, foo에 값이 할당 가능하다.

 


위에 말한 개념들이 다소 헷갈릴 수 있지만 이러한 개념들을 잘구별하고 해석할 수 있다면,

자바스크립트 엔진의 입장에서 코드를 읽을 수 있고 실행 결과를 예측하는 데 도움이 된다.

이는 버그를 줄이고 코드의 품질을 높여줄 것이다.

따라서 이러한 개념들의 구분을 확실히 이해할 필요가 있다. 까먹을 수 있지만 복습하면서 익히도록 하자!!