[JS이론] 표현식(Expression)과 문(Statement)

Published : December 15, 2020

    Tags :

  • javascript

1. 값 (value)

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

  • 평가 = 식을 해석해서 값을 생성하거나 참조하는것
  • 메모리에 2진수로 저장된 값은 데이터 타입에 따라 다르게 해석됨.

    • e.g. 0100 0001은 숫자로 해석하면 65지만, 문자로 해석하면 'A'
  • 변수에 할당되는 것은 '값'
  • var sum = 10 + 20;

    • sum 변수에 할당되는건 10 + 20 이 아니라, 평가된 결과인 숫자값 30

2. 리터럴 (literal)

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

  • 사람이 이해할 수 있는 문자: 알파벳, 숫자, 한글 등등
  • 약속된 기호: ' ', { }, [ ] 등등

3. 표현식 (expression)

: 값으로 평가될 수 있는 문(statement)

  • 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조함
var score = 100;       // 100이 값이니까 표현식임
var score = 50 + 50;   // 50+50이 평가되어 숫자값 100을 생성하니까 표현식임
score;   // 변수를 참조하면 변수값으로 평가되니까 표현식임

var x;   // 값으로 평가될 수 없으니까 표현식이 아님

4. 문 (statement)

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

→ statement의 집합으로 이뤄진 것이 프로그램 & statement를 작성하고 순서에 맞게 나열하는 게 프로그래밍

  • ≒ 명령문이라고도 부름 = 컴퓨터에 내리는 명령

    • e.g. 선언문, 할당문, 조건문, 반복문 등등...
  • statement는 여러 토큰으로 구성됨
  • 토큰: 문법적으로 더이상 나눌 수 없는 코드의 기본 요소
  • statement인 var sum = 1 + 2;에서 var, sum, =, 1, +, 2, ; 각각이 토큰

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

  • 구별하는 법: 변수에 할당해보기
  • 표현식인 문은 값으로 평가되니까 변수에 할당할 수 있음
var x;   // 변수선언문은 표현식이 아니니까
var foo = var x;   // 변수에 할당하면 에러남

x = 100;   // 할당문은 표현식이니까 값처럼 사용 가능
var foo = x = 100;   // x = 100이 x 변수에 할당한 값 100으로 평가되니까 foo에 100이 할당됨

완료값 (completion value)

  • 크롬 개발자도구에서 표현식이 아닌 문을 실행하면 항상 undefined 출력하는데, 이를 완료값이라 함 (표현식의 평가결과가 아님)
  • 표현식인 문을 실행하면 항상 평가된 값을 반환
var foo = 10;   // undefined가 출력됨
100 + foo;      // 110을 출력 = 표현식
foo = 100;      // 100을 출력 = 표현식

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

  • ; = 문의 종료를 나타냄
  • { }로 묶은 코드블록 뒤에는 세미콜론 X

    • e.g. if문, for문, 함수 등
    • 이런 코드블록은 언제나 문의 종료를 의미하는 자체 종결성(self closing)을 갖기 때문
  • JS는 세미콜론 자동 삽입기능이 있어서 문의 끝이라고 예측되는 지점에 세미콜론을 자동으로 붙여줌