JS DeepDive 05장 표현식과 문

한칙촉·2024년 1월 16일

: 표현식이 평가되어 생성된 결과

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

리터럴

: 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법

  • 자바스크립트 엔진은 코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성

표현식

: 값으로 평가될 수 있는 문(statement)
→ 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조

  • 변수 식별자를 참조하면 변수 값으로 평가됨
  • 값으로 평가될 수 있는 문은 모두 표현식!

// 리터럴 표현식
10
'Hello'

// 식별자 표현식 (선언이 이미 존재한다고 가정)
sum
person.name
arr[1]

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

// 함수/메서드 호출 표현식 (선언이 이미 존재한다고 가정)
square()
person.getName()

표현식과 표현식이 평가된 값은 동등한 관계, 즉 동치
→ 표현식은 값처럼 사용할 수 있음
→ 문법적으로 값이 위치할 수 있는 자리에는 표현식도 위치할 수 있음


: 프로그램을 구성하는 기본 단위이자 최소 실행 단위

  • 문의 집합 = 프로그램 / 문을 순서에 맞게 나열 = 프로그래밍
  • 문 = 여러 토큰으로 구성
  • 토큰 = 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소 (ex. 키워드, 식별자, 연산자, 리터럴, 세미콜론, 마침표 ...)

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

  • 코드 블록 = 언제나 문의 종료를 의미하는 자체 종결성을 가짐
  • 세미콜론 자동 삽입 기능(ASI)이 암묵적으로 수행됨

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

// 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아님
var x; 
// 1, 2, 1 + 2, x = 1 + 2는 모두 표현식
// x = 1 + 2는 표현식이면서 완전한 문
x = 1 + 2;
  • 표현식인 문 = 값으로 평가될 수 있는 문
  • 표현식이 아닌 문 = 값으로 평가될 수 없는 문
  • 간단하고 명료한 구별법 : 변수에 할당해 보는 것

// 변수 선언문은 표현식이 아닌 문
var x; 

// 할당문은 그 자체가 표현식이지만 완전한 문
// 즉, 할당문은 표현식인 문
x = 100;
profile
빙글빙글돌아가는..

0개의 댓글