[Javascript] Deep Dive 5장 표현식과 문

Yuzu·2023년 6월 10일
1

5장 표현식과 문

5.1 값(value)

정의: 식(표현식, expression) 이 평가되어 생성된 결과

** 평가(evaluate): 식을 해석해서 값을 생성하거나 참조하는 것

  • 모든 값은 데이터 타입을 가지며, 메모리에 2진수(비트의 나열)로 저장된다.
  • 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있다. (Ex. 0100 0001 = 숫자 65 = 문자 A)
  • 변수에 할당되는 것은 값이다.
var sum = 10+20; // sum에는 10+20이 아니라 숫자 값 30이 할당된다.

5.2 리터럴(literal)

정의: 사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳, 한글 등) 또는 약속된 기호(“”, ’’, ., [], {} 등)를 사용해 값을 생성하는 표기법(notation)

ex) 
3 // 숫자 리터럴
‘Hello’ // 문자열 리터럴
  • 자바스크립트 엔진은 코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성한다.
    예시) 숫자 리터럴 3을 코드에 기술하면 자바스크립트 엔진은 이를 평가해 숫자 값 3을 생성한다.

5.3 표현식(expression)

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

  • 리터럴, 식별자, 연산자, 함수 호출 등의 조합으로 이루어질 수 있다.
  • 리터럴은 자바스크립트 엔진에 의해 평가되어 값을 생성하므로 그 자체로 표현식이다.

예시:

var score = 100; // 리터럴 그 자체로 표현식 = 리터럴 표현식

var score = 50 + 50; // 리터럴과 연산자로 이루어진 표현식 = 연산자 표현식

score; // 변수 식별자 참조는 값으로 평가되므로 표현식이다. = 식별자 표현식

square()
person.getName() // 함수/메서드 호출 표현식 (선언이 이미 존재한다고 가정)
  • 표현식과 표현식이 평가된 값은 동치(동등한 관계)다.
  • 값이 위치할 수 있는 자리에는 표현식도 위치할 수 있다.

5.4 문(statement)

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

  • 문의 집합 = 프로그램
  • 문을 작성하고 순서에 맞게 나열= 프로그래밍
  • 문은 여러 토큰으로 구성된다.
  • 문은 컴퓨터에 내리는 명령문이다.
  • 선언문, 할당문, 조건문(if문), 반복문(for문) 등으로 구분된다.

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

var sum = 1 + 2; // var, sum, =, 1, +, 2 모두 하나의 토큰이다..!

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

  • 세미콜론(;)은 문의 종료를 나타낸다.
  • 코드 블록( { … } ) 은 문의 종료를 의미하는 자체 종결성(self closing)을 가지므로 ; 을 붙이지 않는다.
  • 세미콜론은 생략 가능하다. 세미콜론 자동 삽입 기능이 암묵적으로 수행되기 때문

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

  • 표현식은 문의 일부일 수도 있고 그 자체로 문이 될 수도 있다.
  • 표현식인 문과 표현식이 아닌 문을 구별하는 가장 간단하고 명료한 방법은 변수에 할당해 보는 것이다.
  • 표현식인 문: 값으로 평가될 수 있는 문 , 변수에 할당 가능
  • 표현식이 아닌 문: 값으로 평가될 수 없는 문, 변수에 할당할 수 없다.

예시)

var x; 
var foo = var x; (X)
// 변수 선언문은 값으로 평가될 수 없다. = 표현식이 아닌 문

x = 100;
var foo = x = 100;
// 할당문은 표현식이면서 완전한 문이다. = 표현식인 문

완료 값(completion value)

표현식이 아닌 문을 실행하면 undefined(완료 값)를 출력한다
완료 값은 표현식의 평가 결과가 아니므로 변수에 할당하거나 참조할 수 없다.

profile
냐하

0개의 댓글