모던 자바스크립트 Deep Dive 5장 표현식과 문

차차·2023년 12월 20일
post-thumbnail

처음엔 어떻게 정리해야할지 몰랐지만 점점 정리법을 찾아나가는 중 ~~


5장 표현식과 문

값은 표현식이 평가되어 생성된 결과
평가란 식을 해석해서 값을 생성하거나 참조하는 것(=사람이 수학문제 푸는 것처럼!)
참조: 변수에 저장된 값을 읽어 들이는 것

  • 모든 값은 데이터 타입을 가지며, 메모리에 2진수(비트의 나열)로 저장됨
  • 변수에 할당되는 것
var sum = 10 + 20

여기서 변수 sum에 할당되는 것은 10 + 20 이 아니라 평가된 결과인 숫자 값 30
따라서 10 + 20은 할당 이전에 평가되어 값을 생성해야함

값은 식으로도 생성할 수 있지만 다른 방법으로 생성할 수도 있는데, 기본적인 방법은 리터럴

리터럴

리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법
즉, 값을 생성하기 위해 미리 약속된 표기법

예를 들어,

3

여기서 3은 단순한 아라비아 숫자 3이 아니라 숫자 값 3(0000 0010)으로 약속된 숫자 리터럴

표현식

표현식은 값으로 평가될 수 있는 문
즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조

앞서 살펴본 리터럴은 값으로 평가되기에 따라 리터럴도 표현식임

var score = 100;

위 예제의 리터럴 100은 자바스크립트 엔진에 의해 평가되어 값을 생성하므로 그 자체로 표현식임

또 다른 리터럴의 예시로

var score = 50 + 50 // 리터럴과 연산자로 이루어져있지만 평가되어 숫자 값 100을 생성하므로 표현식

score; // 변수 식별자를 참조하면 변수 값으로 평가됨. 여기서는 100이기에 표현식
//리터럴 표현식
10
'hello world'

//식별자 표현식(선언이 이미 존재할 때)
sum
person.name
arr[1]

//연산자 표현식
10 + 20
sum = 10
sum !== 10

// 함수/메서드 호출 표현식(선언이 이미 존재할 때)
square()
person.getName()

표현식과 평가된 값은 동등한 관계, 동치
-> 따라서 문법적으로 값이 위치할 수 있는 자리에 표현식도 위치할 수 있음

문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위
문의 집합으로 이루어진 것이 프로그램이며, 문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍

문은 여러 토큰으로 구성됨
토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
ex) 키워드, 식별자, 연산자, 리터럴, 세미콜론, 마침표 등
-> 쉽게 생각해서 코드 짤 때 띄어쓰기 하는 것들 사이가 다 토큰이라고 생각하면 됨

문은 명령문이라고 부르는데, 문이 실행되면 명령이 실행되고 무슨 일인가가 일어나게 되기 때문
문은 선언문, 조건문, 반복문 등으로 구분할 수 있음

세미콜론과 세미콜론 자동 삽입 기능

  • 세미콜론(;)은 문의 종료를 나타냄
  • 그러나 if문, for문, 함수 등의 문을 {} 중괄호로 묶은 코드블록은 자체 종결성을 가져 붙이지 않음
  • 자바스크립트 엔진으로는 세미콜론 자동삽입기능(ASI)가 암묵적으로 수행되기에 생략 가능하지만, 웬만하면 붙이는게 좋다!

표현식인 문과 표현식이 아닌 문

표현식은 문의 일부일 수도 있고, 그 자체로 문이 될 수도 있음

문의 두 종류
1. 표현식인 문 - 값으로 평가될 수 있는 문 ex) x = 1 + 2;
2. 표현식이 아닌 문 - 값으로 평가될 수 없는 문 ex) 변수 선언문 var x;

둘을 구분하는 가장 쉬운 방법은 변수에 할당해보는 것
1은 변수에 할당 가능하고, 2는 변수에 할당이 불가능함

profile
노트북이 좋아

0개의 댓글