Modern JavaScript Deep Dive 5장

younghyun·2022년 5월 9일
0

표현식과 문

표현식이 평가(식을 해석해서 값을 생성하거나 참조)되어 생성된 결과.

리터럴

사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳, 한글 등) 또는 약속된 기호("", ., [], {}, // 등)를 통해 값을 생성하는 표기법
자바스크립트 엔진은 코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성함.

  • 리터럴 종류
    정수, 부동소수점, 2진수, 8진수, 16진수, 문자열, 불리언, null, undefined, 객체, 배열, 함수, 정규 표현식
// 숫자 리터럴 3
3

3은 숫자 리터럴. 사람이 이해할 수 있는 아라비아 숫자를 사용해 숫자 리터럴 3을 코드에 기술하면 자바스크립트 엔진은 이를 평가해 숫자 값 3을 생성

표현식

값으로 평가될 수 있는 문. 표현식이 평가되면, 새로운 값을 생성하거나 기존 값을 참조함.
리터럴, 식별자(변수, 함수 등의 이름), 연산자, 함수 호출 등의 조합으로 이루어짐.

var score = 100; // 리터럴 100은 자바스크립트 엔진에 의해 값을 생성 해서 표현식
var score = 50 + 50; // 50 + 50은 리터럴과 연산자로 이루어짐. 값을 생성하므로 표현식
score; // 변수 식별자 참조 시 값으로 평가되서 표현식

프로그램을 구성하는 기본 단위이자 최소 실행 단위.
문을 작성하고, 순서에 맞게 나열하는 게 프로그래밍.

  • 종류
    명령문, 선언문, 할당문, 조건문, 반복문 등

  • 토큰 : 문법적 의미를 가지고, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
    Ex) 키워드, 식별자, 연산자, 리터럴, 세미콜론(;), 마침표(.) 등의 특수기호

  • 세미콜론(;) : 문의 종료 나타냄. 문의 종료 위치 파악하고 순차적으로 하나씩 문을 실행. if문,for문, 함수 등의 코드 블록(문의 종료 의미하는 자체 종결성 가짐.)뒤에는 세미콜론을 붙이지 않음. 생략 가능. (자바스크립트 엔진이 소스코드를 해석할 때 문의 끝이라고 예측되는 지점에 세미콜론을 자동으로 붙여주는 세미콜론 자동 삽입 기능 : ASI이 암묵적으로 수행.)

  • 표현식인 문, 표현식이 아닌 문
    표현식인 문 : 값으로 평가될 수 있는 문
    표현식이 아닌 문 : 값으로 평가될 수 없는 문

표현식인 문과 표현식이 아닌 문 구별하는 가장 간단하고 명료한 방법은 변수에 할당해보는 것.

// 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다.
var x;
// 1, 2, 1 + 2, x = 1 + 2는 모두 표현식
// x = 1 + 2는 표현식이며 완전한 문
x = 1 + 2;
// 변수 선언문
var foo = 10;
< undefined

// 조건문
if (true) {}
< undefined;
표현식이 아닌문을 실행하면 undefined 출력(완료값, 표현식 평가 결과가 아님, 변수에 할당할 수도 참조할 수도 없음.)
var num = 10;
< undefined;

// 표현식은 평가된 값을 반환
// 표현식 문
100 + num;
< 110

// 할당문
num = 100;
100;
표현식인 문은 평가된 값을 반환
profile
선명한 기억보다 흐릿한 메모

0개의 댓글