Skip to Content

5장 표현식과 문

5-1. 값

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

(평가란 식을 해석해서 값을 생성하거나 참조하는 것을 의미, 그냥 표현식 계산하는 과정이라고 생각!)

10 + 20; // 10 + 20 이라는 '표현식'은 '평가'되어 숫자 값 30을 생성
  • 변수에 할당되는 것이 **‘값’**이다.
  • 모든 값은 데이터 타입을 가지고, 그 타입에 따라 다르게 해석된다.

5-2. 리터럴

리터럴

사람이 이해할 수 있는 문자(숫자, 알파벳, 한글 등) 혹은

약속된 기호(' ', " ", [ ], // 등)를 사용해 값을 생성하는 표기법

ex) 3이 어떻게 평가되고, 해석되는지 확인해보자

3; // 숫자 리터럴

JS 엔진이 주어진 리터럴을 평가해서 메모리에 저장되는 값을 생성한다.

JS 엔진이 주어진 리터럴을 평가해서 메모리에 저장되는 값을 생성한다.

JS에 존재하는 다양한 리터럴

a2.png

5-3. 표현식

값으로 평가될 수 있는 문

var score = 100;
  • 리터럴, 연산자, 식별자, 함수 호출 등의 조합으로 이루어짐 → 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조하는 결과로 이어짐
  • 리터럴 또한, 값으로 평가될 수 있기에 리터럴은 곧 표현식이다

5-4. 문(statement)

프로그램을 구성하는 기본 단위이자 최소 실행 단위 → 중요!

문의 구성

여러 토큰으로 구성된다

  • 토큰 : 문법적으로 더 이상 나눌 수 없는 기본 요소 ex) 키워드, 리터럴, 식별자, 연산자, ;, .

a3.png

문의 구분

  1. 선언문

    • 변수 선언문
      var x;
    • 함수 선언문
      function foo() {}
  2. 할당문

    x = 5;
  3. 조건문

    if (x > 1) { console.log(x); }
  4. 반복문

    for (var i = 0; i < 2; i++) { console.log(i); }

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

세미콜론은 문(statement)의 종료를 나타낸다!

⇒ JS 엔진은 세미콜론을 기준으로 문(statement)을 나누어 하나씩 실행한다.

단, 로 나타내는 코드 블록 뒤에는 넣지 않는다.

코드 블록은 언제나 문의 종료를 의미하는 자체 종결성을 가지고 있기 때문이다.

ASI

JS 엔진에는 세미콜론 자동 삽입기능(Automatic Semicolon Insertion: ASI)가 존재한다.

+) 사실, 세미콜론을 넣지지 않아도 돌아가긴 하는데, 의도한대로 작동한다고 보장할 수는 없다.

+) 놀랍게도, 세미콜론을 붙이지 말자는 주장도 있는 편,,,

5-6. 표현식인 문과 표현식이 아닌 문

그럼 표현식과 문(statement)의 다른 점은 무엇인가?

변수에 할당 가능한지에 대한 여부로 판단된다!

  • 표현식인 문 : 변수에 할당 가능
  • 표현식이 아닌 문 : 변수에 할당 불가능
var x; //표현식이 아닌 문(statement) : 값으로 평가될 수 없기에 표현식이 아니다. 1; //표현식인 문(statement) : 값이므로 문이다 1 + 2; //표현식인 문(statement) : 값이므로 문이다 x = 1 + 2; //표현식인 문(statement) : 값이므로 문이며, 완전한 표현식이다
Last updated on