5장 표현식과 문

    📂5장 표현식과 문


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

    값의 특징

    • 모든 값은 데이터 타입을 가짐.
    • 메모리에 비트(2진수)의 나열로 저장.
    • 저장된 값은 데이터 타입에 따라 다르게 해석될 가능성 있음.
      • 예) 0100 0001를 숫자로 해석하면 65, 문자로 해석하면 'A'
    • 변수에 할당되는 것은 값임.
    var sum = 10 + 20 ; //30
    • 10 + 20(식)이 평가되어 값 30을 생성함.
    • 변수 sum이 기억하는 메모리 공간에 저장되는 것은 값(30)임. 10+20이 아님.

    🔎 용어 정리

    • 평가 : 식을 해석해서 값을 생성 하거나 참조 하는일
    • 참조 : 변수에 저장된 값을 읽어 들이는 것

    값 생성 방법 - 리터럴

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

    • 💻 자바스크립트 엔진 : 런타임에 리터럴을 평가해 값을 생성리터럴의 다양한 종류
    • 정수 리터럴 : 100
    • 문자 리터럴 : "Hello"
    • 배열 리터럴 : [1,2,3]
    • 정규 표현식 리터럴 /[A-Z]+/g
      등등

    표현식

    : 값으로 평가될 수 있는 문
    => 표현식으로 평가되면 새로운 값을 생성 또는 기존값을 참조함.

    리터럴은 그 자체로 표현식이다?

    var price = 1000;
    • 1000은 숫자 리터럴임.
    • 숫자 리터럴인 1000은 자바스크립트 엔진에 의해 평가되어 값을 생성하므로 표현식임.
    • 결론 : 값으로 평가될 수 있는문은 모두 표현식
      // 리터럴 표현식
      10
      "Hello"
      
      // 식별자 표현식 (아래 식별자는 이미 선언되었다고 가정함.)
      sum
      person.age
      arr[0]
      
      // 연산자 표현식
      10 + 20
      sum += 10
      
      // 함수/메서드 호출 표현식(이미 선언되었다고 가정함.)
      calculator()
      person.getAge()

    표현식은 다른 표현식의 일부가 되어 새로운 값을 만들 수 있다?

    var x = 1 + 2 
    x + 3 // 6
    • var 식별자 표현식(x) = 1 + 2 (연산자 표현식)
    • x는 할당되어 있는 숫자 값 3으로 평가
    • 그렇기 때문에 숫자가 들어가야할 연산자 표현식에 식별자 표현식인 x가 들어갈 수 있음.
    • 다른 표현식(1 + 2)의 일부가 된 표현식(3)은 새로운 값(6)을 만들 수 있음.

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

    • 문은 여러 토큰으로 구성
    • 문은 선언문, 할당문, 조건문, 반복문 등으로 구분

    🔎 용어 정리

    • 토큰 : 문법적인 의미, 더 이상 나눌 수 없는 코드의 기본 요소
      예) var sum = 1 + 2 의 토큰은 var, sum, =, 1, +, 2 를 의미

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

    • 표현식인 문 : 값으로 평가되므로 변수에 할당
    • 표현식이 아닌 문 : 값으로 평가할 수 없으므로 변수에 할당X (에러발생)
      var x; // 변수 선언문은 값으로 평가할 수 없으므로 '표현식이 아닌 문'
      

    x = 100; // 할당문은 그 자체로 표현식! 값처럼 사용 가능

    진짜 할당문을 값으로 사용 가능한지 확인예제
    ```js
    var moon = x = 100;
    console.log(moon) // 100
    • x=100은 x변수에 할당한 값 100으로 평가되기 때문에 moon변수에 100이 할당됨.

    [모던 자바스크립트 Deep Dive, ⌜이웅모 ⌟, 위키북스, 20210103]를 읽고 정리한 글입니다.

    '개발언어 > [JS] deep-dive 정리' 카테고리의 다른 글

    [9장] 단축 평가 - 논리 연산자를 사용한 단축 평가  (0) 2022.12.12
    [9장] 타입 변환  (0) 2022.12.12
    8장 제어문  (2) 2022.12.10
    6장 데이터 타입  (0) 2022.12.07
    4장 변수  (0) 2022.12.02

    댓글