일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Do it! 시리즈
- 노마드코더
- 노개북
- 제로베이스
- 프로그래머스
- K-Digital Credit
- CodeStates
- 티스토리챌린지
- 노마드 코더
- 자격증
- 백준
- 개발자북클럽
- 구름edu
- IT 지식
- 공부를 가장한 일기일지도
- boj
- 자바스크립트
- javascript
- js
- 엘리스코딩
- 오블완
- SQLD
- 비전공자를 위한
- 톺아보기
- nomadcoders
- 최원영 저자
- 모던 자바스크립트 deep dive
- SQL 개발자
- 이해할 수 있는
- 알고리즘
- Today
- Total
개발자를 희망하는 초보의 자기개발 이야기
모던 자바스크립트 Deep Dive 5장 표현식과 문 본문
스터디를 진행하면서 책을 읽고 내용과 떠오르는 생각, 용어들을 정리하고 있습니다.
문제 되는 부분이나 틀린 부분이 있다면 편하게 말씀해 주세요.
5장 표현식과 문
5.1 값
용어의 의미를 정확히 설명할 수 없다면 개념을 제대로 이해하지 못한 경우가 많다. 값(value)은 식(표현식)이 평가(evaluate)되어 생성된 결과를 말한다. 모든 값은 데이터 타입을 가지며, 이에 따라 다르게 해석될 수 있다. 예를 들어 이진수 01000001은 숫자 65에 해당하지만 문자 'A'로도 해석할 수 있다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간, 또는 해당 공간을 식별하기 위해 붙인 이름이다.
var sum = 10 + 20;
10 + 20은 30으로 sum이라는 변수에 최종 할당되는 값은 30이다. 10 + 20은 할당 이전에 평가되어 값을 생성해야 한다.
5.2 리터럴
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법이다. 자바스크립트 엔진은 코드가 실행되는 런타임 시점에 리터럴을 평가해 값을 생성한다. 즉, 리터럴은 값을 생성하기 위해 미리 약속한 표기법이다.
5.3 표현식
표현식은 값으로 평가할 수 있는 문(statement)이다. 즉, 표현식이 평가(실행)되면 새로운 값을 생성하거나 기존 값을 참조한다. 표현식은 리터럴, 식별자(변수, 함수), 연산자, 함수 호출 등의 조합으로 다양하게 이뤄질 수 있다. 즉, 값으로 평가(실행)될 수 있는 문은 모두 표현식이다.
var num = 1;
if( 2 === ( num + 1 ) ) {
console.log("똑같다")
}
※ 표현식을 값 대신?
: 표현식은 문법적으로 값이 위치할 수 있는 자리에 위치할 수 있고, 다른 표현식의 일부가 되어 새로운 값을 만들어낼 수도 있다.
위의 예시에서 if 문 내에서 숫자 2와 ( num + 1 )을 동등 비교하고 있는데 ( num + 1 ) 은 표현식으로 값 2로 평가되기 때문에 정상동작한다.
5.4 문
문(statement)은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다. 문은 여러 토큰으로 구성되며, 이는 컴퓨터에 내리는 명령이 되기 때문에 문을 명령문이라고도 부른다.
※ 토근이란?
: 문법적인 의미를 가지며, 문법적으로 더이상 나눌 수 없는 코드의 기본 요소를 의미한다. 즉, 기호 하나, 연산자 하나하나가 모두 토큰이다.
5.5 세미콜론과 세미콜론 자동 삽입 기능
세미콜론(;)은 문의 종료를 나타내고 대부분의 프로그래밍 언어는 반드시 코드 끝에 붙여야 한다. 하지만 자바스크립트 엔진은 세미콜론 자동 삽입 기능이 암묵적으로 수행되기 때문에 세미콜론을 옵션으로 보고 생략해도 된다. 원칙적으로 if문, for문, 함수 등의 0개 이상의 문을 중괄호로 묶은 코드 블록은 해당 코드블록 하나하나가 자체 종결성을 갖는다고 보기 때문에 세미콜론을 붙이지 않는다. 하지만 동작을 제대로 예측하지 못해 오류가 발생할 수 있으므로 세미콜론을 가급적 사용하도록 권장하는 분위기다.
function foo () {
return
{}
}
※ 자바스크립트 엔진의 암묵적인 동작(1)?
: 위의 코드는 중괄호 내의 내용을 반환하는 return {} 으로 고려했으나, 실제 동작은 return;으로 return 이후의 중괄호는 실행되지 않는다.
5.6 표현식인 문과 표현식이 아닌 문
표현식인 문과 표현식이 아닌 문을 구별한느 가장 간단하고 명료한 방법은 변수에 할당해 보는 것이다. 표현식인 문은 결과가 값이기 때문에 변수에 할당할 수 있으나 표현식이 아닌 문은 에러가 발생한다. 크롬 개발자 도구에서 표현식이 아닌 문을 실행하면 언제나 undefined를 출력하는데 이를 완료 값이라 한다. 완료 값은 표현식의 평가 결과가 아니다. 따라서 변수에 할당할 수 없고 참조할 수도 없다.
정리
표현식과 값의 관계에 대해서 명확하게 알 수 있었고, 값 대신 표현식을 변수에 할당하거나 조건문에 피연산자로 할당하는 것처럼 좀 더 자유도 있게 사용할 수 있다는 것을 배웠다. 이번 챕터는 큰 맥락을 관통하는 것은 아니지만 챕터 초반에 나온 것처럼 각 용어를 명확히 정의하여 세부적인 동작에 관해 파악하도록 돕는 챕터라 생각한다.
'도서 > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
모던 자바스크립트 Deep Dive 7장 연산자 (2) | 2023.11.09 |
---|---|
모던 자바스크립트 Deep Dive 6장 데이터 타입 (0) | 2023.11.08 |
모던 자바스크립트 Deep Dive 4장 변수 (0) | 2023.11.06 |
모던 자바스크립트 Deep Dive 3장 자바스크립트 개발 환경과 실행 방법 (0) | 2023.11.05 |
모던 자바스크립트 Deep Dive 2장 자바스크립트란? (0) | 2023.11.03 |