** 본 글은 모던 자바스크립트 DEEP DIVE 를 읽고 정리한 글입니다.
** 본인이 책 내용의 이해를 돕기 위해 정리한 글이며, 부 정확한 정보전달이 있을 수 있습니다.
문 (statement) 이란?
프로그램의 기본 단위이자 최소 실행단위
컴퓨터에게 명령하는 한 문장 이라고 할 수 있다.
변수 선언문, 변수 할당문, 함수 선언문, 조건문, 반복문... 등등
이렇게 모든 실행 단위들을 문 (statement) 라고 할 수 있다.
그리고 이 문 (statement) 은 값 을 가지냐에 따라 표현식 과 표현식이 아닌 문 으로 나눌 수 있다.
값(value) ?
표현식이 평가되어 생성된 결과
var sum = 10 + 20; ⇒ 30 이라는 값을 지닌다.
평가(evaluation) 라는 말이 들어가서 어려워 보이지만,
수학의 값을 생각하자. 우리가 써먹을 예정이거나 도출 해 낸 결과라고 생각하면 편하다.
표현식(Expression) ?
값(value) 으로 평가될 수 있는 문 (statement)
~~문을 선언/호출했는데, 값이 있다면 표현식이다 라고 이해하면 편하다.
// 리터럴 표현식 (문자열 리터럴)
"Hello" // string
10 // number
// 식별자 표현식
var sum; // 변수 선언문, 표현식 X
sum = 10; // 변수 할당문, 표현식 O
// 함수 호출 표현식
function test () { // 함수 선언문, 선언 자체는 값이 없으므로 표현식 X
return "test"
}
test() // 이 함수는 return "test"값을 가지므로 표현식 O
표현식이 아닌 문과 구분방법
앞서 표현식과 반대로 값을 가지지 않는 문(statement)도 있는데, 이를 어떻게 알 수 있을까?
변수에 할당해보자!
var one; // one 이라고 선언한 변수에 값을 할당해본다.
one = '1'; // 문자열 리터럴 표현식을 할당했다. 표현식 O
one = var one2; // 변수 선언문 자체는 할당이 불가능하다. 표현식 X
one = if (1 > 0) {...} // 조건문 자체도 할당이 안된다. 표현식 X
one = 10 > 0 ? 'a' : 'b' // 그러나 이런 삼항연산자의 형태로 값을 가지는건 표현식 O
해결되지 않은 궁금증
일반적으로var two = 2; 이렇게 변수를 사용할 때, 변수 선언과 할당 두 가지 절차를 거친다.
위 문법은 표현식인가?
var three3 = var three = ‘3’ // 분명 값을 가지지만, 선언의 과정이 포함되어서인지 오류가 난다.
리터럴과 토큰
해당 챕터 내용에는 나왔지만, 흐름상 애매해서 리터럴과 토큰은 따로 설명할 것입니다.
리터럴(Literal) 이란?
값을 생성하는 표기법 이라고 보면 된다.
어? 그냥 쓰면 값 아닌가...? 라고 생각할 수 있지만 예제를 보면 바로 이해가 될 것이다.
var one = one; // 에러. 문자열은 이렇게 쓰는게 아니고,
var one = 'one'; // 문자열 리터럴(표기법)으로 사용하여 문자열 값을 생성하였다.
one = 1; // 숫자는 다른 기호 없이 적는게 문자열 리터럴이다.
one = true; // 이건 boolean 리터럴이기 때문에, 따옴표 없이도 에러가 나지 않는다.
one = [1, '1']; // 배열 리터럴. 배열은 중괄호와 ,(콤마)로 구분하여 사용한다
// 기타등등...
우리가 코딩을 하면서
"이건 이렇게 씁니다~" 하면서 배운 많은 방법들이
그 데이터 타입의 리터럴 이라고 보면 되겠다.
토큰(Token)은 뭔가요?
문법적으로 더 이상 나눌 수 없는 기본적 요소
쉽게말하면 어절(語節) 이다.
var one = '1'; // 요 변수 선언 + 할당문은
var one = '1' ;
이렇게 다섯개의 토큰(token) 으로 나눌 수 있다.
요약
문 (statement)은 컴퓨터에게 명령을 내리는 문장 이라고 볼 수 있고,
토큰 (token)은 그 명령을 이루는 하나의 어절 이라고 볼 수 있다.
문 (statement) 이 값 (value)를 가지는 지에 따라표현식 (Expresion) 과표현식이 아닌문 으로 나뉜다.
후기
이번 챕터는 오히려 저번 챕터보다 덜 프로그래밍적인(?) 요소여서인지, 그나마 이해가 쉬웠다.
당연한 내용들이지만 이렇게 하나씩 정확한 단어로 씹고 넘어가는 것이 나중에 분명 도움이 될 것이라고 생각한다.
오늘도 화이팅
'Study > Java Script' 카테고리의 다른 글
[Java Script] 09. 타입 변환과 단축평가 (feat. 옵셔널 체이닝 연산자) (1) | 2022.07.31 |
---|---|
[Java Script] 08. 제어문 (0) | 2022.07.30 |
[Java Script] 07. 연산자 (0) | 2022.07.28 |
[Java Script] 06. 데이터 타입 (0) | 2022.07.27 |
[Java Script] 모던 자바스크립트 DEEP DIVE: 시작 & 04. 변수 (0) | 2022.07.24 |