5장 표현식과 문
5-1. 값
**표현식(expression)**이 **평가(evaluate)**되어 생성된 결과
(평가란 식을 해석해서 값을 생성하거나 참조하는 것을 의미, 그냥 표현식 계산하는 과정이라고 생각!)
10 + 20;
// 10 + 20 이라는 '표현식'은 '평가'되어 숫자 값 30을 생성- 변수에 할당되는 것이 **‘값’**이다.
- 모든 값은 데이터 타입을 가지고, 그 타입에 따라 다르게 해석된다.
5-2. 리터럴
리터럴
사람이 이해할 수 있는 문자(숫자, 알파벳, 한글 등) 혹은
약속된 기호(' ', " ", [ ], // 등)를 사용해 값을 생성하는 표기법
ex) 3이 어떻게 평가되고, 해석되는지 확인해보자
3; // 숫자 리터럴
JS 엔진이 주어진 리터럴을 평가해서 메모리에 저장되는 값을 생성한다.
JS에 존재하는 다양한 리터럴

5-3. 표현식
값으로 평가될 수 있는 문
var score = 100;- 리터럴, 연산자, 식별자, 함수 호출 등의 조합으로 이루어짐 → 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조하는 결과로 이어짐
- 리터럴 또한, 값으로 평가될 수 있기에 리터럴은 곧 표현식이다
5-4. 문(statement)
프로그램을 구성하는 기본 단위이자 최소 실행 단위 → 중요!
문의 구성
여러 토큰으로 구성된다
- 토큰 : 문법적으로 더 이상 나눌 수 없는 기본 요소
ex) 키워드, 리터럴, 식별자, 연산자,
;,.

문의 구분
-
선언문
- 변수 선언문
var x; - 함수 선언문
function foo() {}
- 변수 선언문
-
할당문
x = 5; -
조건문
if (x > 1) { console.log(x); } -
반복문
for (var i = 0; i < 2; i++) { console.log(i); }
5-5. 세미콜론과 세미콜론 자동 삽입 기능
세미콜론은 문(statement)의 종료를 나타낸다!
⇒ JS 엔진은 세미콜론을 기준으로 문(statement)을 나누어 하나씩 실행한다.
단, 로 나타내는 코드 블록 뒤에는 넣지 않는다.
코드 블록은 언제나 문의 종료를 의미하는 자체 종결성을 가지고 있기 때문이다.
ASI
JS 엔진에는 세미콜론 자동 삽입기능(Automatic Semicolon Insertion: ASI)가 존재한다.
+) 사실, 세미콜론을 넣지지 않아도 돌아가긴 하는데, 의도한대로 작동한다고 보장할 수는 없다.
+) 놀랍게도, 세미콜론을 붙이지 말자는 주장도 있는 편,,,
5-6. 표현식인 문과 표현식이 아닌 문
그럼 표현식과 문(statement)의 다른 점은 무엇인가?
⇒ 변수에 할당 가능한지에 대한 여부로 판단된다!
- 표현식인 문 : 변수에 할당 가능
- 표현식이 아닌 문 : 변수에 할당 불가능
var x; //표현식이 아닌 문(statement) : 값으로 평가될 수 없기에 표현식이 아니다.
1; //표현식인 문(statement) : 값이므로 문이다
1 + 2; //표현식인 문(statement) : 값이므로 문이다
x = 1 + 2; //표현식인 문(statement) : 값이므로 문이며, 완전한 표현식이다Last updated on