값
값은 식(표현식)이 평가되어 생성된 결과를 말한다.
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이 할당된다.
'Javascript > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
[모던 자바스크립트 Deep Dive] 09. 타입 변환과 단축 평가 (0) | 2023.12.31 |
---|---|
[모던 자바스크립트 Deep Dive] 07. 연산자 (0) | 2023.12.27 |
[모던 자바스크립트 Deep Dive] 04. 변수 (0) | 2023.03.03 |
[모던 자바스크립트 Deep Dive] 06. 데이터 타입 (0) | 2023.02.14 |