모던 자바스크립트 deep dive
05장 표현식과 문
오늘의 뼈때리는 구문 : 개념을 이해한다는 것은 바로 용어를 이해하고 설명할 수 있다는 것 ...
앞으로 문과 표현식이란 용어가 자주 등장할 것니 엔진의 입장에서 코드를 읽고 결과를 예측할 수 있어야 한다.
값
- 값 : 값은 표현식이 평가되어 생성된 결과
- 모든 값은 데이터타입을 가진다.
var sum = 10 + 20;
- 위 sum변수에 할당되는건 10 + 20이 아닌 30
리터럴
- 리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법
10
- 10은 단순한 숫자가 아닌 숫자 리터럴이다.
- 자바스크립트 엔진은 이 숫자리터럴을 평가하여 값 10을 생성한다.
- 알파벳, 한글, 특수기호 등도 마찬가지다.
- 즉, 리터럴은 값을 생성하기 위해 미리 약속한 표기법이다.
표현식
- 표현식: 값으포 평가될 수 있는 문(statement)이다.
- 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.
- 리터럴도 표현식이다.
- 값으로 평가될 수 있는 문은 모두 표현식이다.
- 표현식은 다른 표현식의 일부가 되어 새로운 값을 만들 수 있다.
문
- 문 : 프로그램을 구성하는 기본 단위이자 최소 실행 단위
- 문의 집합이 곧 프로그램
- 문은 여러 토큰으로 구성
- 토큰 : 문법적인 의미를 가지며 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
let a = 3 + 3 ;
- 문의 종류 : 선언문, 할당문, 조건문, 반복문 등
세미콜론(;)
- 자바스크립트 엔진은 세미콜론으로 문이 종료한 위치를 파악한다.
- 코드블록을 종료하는 {} 뒤에는 붙이지않는다(종결의 의미를 담고있음)
- 세미콜론은 생략이 가능하다.
- 엔진이 문의 끝이라고 생각하는 부분을 예측하고 automatic semicolon insertion 기능을 암묵적으로 실행한다.
- 간혹 개발자의 의도와 다르게 붙을수도 있다.
- 붙이지 말자는 의견도 설득력이 있다고 한다. 하지만 붙이는게 절대적 의견이라고 한다.
표현식이 아닌 문
- 변수 선언문은 표현식이 아니다. 하지만 할당문을 표현식이다.
let x;
x=10;
let a = let x;
let b = x = 100;