Javascript/모던 자바스크립트 Deep Dive

[모던 자바스크립트 Deep Dive] 05. 표현식과 문

딸기케잌🍓 2023. 3. 4. 23:03

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

var sum = 10 + 20;
//변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당된다.

sum 변수에 할당되는 것인 10+20이 아닌 30으로 10+20은 할당 이전에 평가되어 값을 생성해야 한다.

값을 생성하는 기본적인 방법은 리터럴을 사용하는 것이다.

 

리터럴

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

자바스크립트 엔진은 코드가 실행되는 런타임에 리터럴을 평가해 값을 생성한다.

 

표현식

값으로 평가될 수 있는 문이다.

표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.

var score = 100;

위 예제의 100은 리터럴이다. 리터럴 100은 자바스크립트 엔진에 의해 평가되어 값을 생성하므로 리터럴은 그 자체로 표현식이다.

 

다음은 표현식의 다양한 예제들이다.

//리터럴 표현식
10
'Hello'

//식별자 표현식(선언이 이미 존재한다고 가정)
sum
person.age
arr[0]

//연산자 표현식
10 + 20
sum = 10

//함수/메서드 호출 표현식(선언이 이미 존재한다고 가정)
square()
person.getName()

표현식과 표현식이 평가된 값은 동등한 관계이다. => 표현식은 값처럼 사용할 수 있다. => 문법적으로 값이 위치할 수 있는 자리에 표현식도 위치할 수 있다.

 

문(statement)

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

문은 여러 토큰으로 구성된다.

토큰이란?
토큰은 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소이다.
키워드, 식별자, 연산자, 리터럴, 세미콜론, 마침표 등은 문법적 의미를 가지며 문법적으로 나눌 수 없는 최소한의 기본 요소이므로 토큰이다.

문은 선언문, 할당문, 조건문, 반복문 등으로 구분할 수 있다.

문과 표현식을 구별하고 해석할 수 있다면 자바스크립트 엔진의 입장에서 코드를 읽을 수 있고 실행 결과를 예측하는 데 도움이 된다!

 

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

표현식인 문

값으로 평가될 수 있는 문

Ex) 할당문 => 값으로 평가 될 수 있으므로 표현식인 문

 

표현식이 아닌 문

값으로 평가될 수 없는 문

Ex) 변수 선언문 => 값으로 평가 될 수 없으므로 표현식이 아닌 문

 

위 둘을 구분하는 간단한 방법은 변수에 할당해 보는 것이다.

var foo = x = 100;
//표현식인 문은 값처럼 사용할 수 있다.

위 예제에서 할당문(x = 100)을 값처럼 변수에 할당했다. 표현식인 문은 할당한 값으로 평가되어 x = 100은 100으로 평가되고, foo 변수에 100이 할당된다.