13 분 소요

이웅모 저자의 모던 javascript deep dive를 공부한 내용을 정리한 글입니다.

2. 표현식

2.1 값이란?

  • 은 식이 평가되어 생성된 결과를 말한다.
// 변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당된다
var sum = 10 + 20;

2.2 리터럴

  • 리터럴은 사람이 이해할 수 있는 문자 또는 미리 약속된 기호로 표기한 코드
// 정수 리터럴
100
// 부동소수점 리터럴
10.5
// 2진수 리터럴
0b011001
// 8진수 리터럴
0o151
// 16진수 리터럴
0x41
// 문자열 리터럴
'hello'
"world"
// 불리언 리터럴
true
false
// null 리터럴
null
// undefined 리터럴
undefined
// 객체 리터럴
{name : 'Lee', age : 20}
// 배열 리터럴
[10, 20, 30]
// 함수 리터럴
function (){}
// 정규표현식 리터럴
/[A-Z]+/g

2.3 표현식과 문

  • 표현식은 값으로 평가될 수 있는 문(statement)이다.
  • 값으로 평가 될 수 있는 모든 문은 표현식이다.
// 100은 리터럴 , 리터럴은 그 자체로 표현식이다.
// 100 : 리터럴 표현식
var score = 100;
// 50 + 50은 리터럴과 연산자로 이뤄져 있다. 50 + 50이 100을 생성하므로 표현식이다.
// 50 + 50 : 연산자가 포함된 표현식
var score = 50 + 50;
// score 변수 참조
// 식별자 표현식
score; // 100
// 변수 식별자를 참조하면 변수 값으로 평가된다. 값으로 평가되므로 표현식
// 함수/메서드 호출 표현식
add(score);
  • 은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다.
  • 문은 컴퓨터에 내리는 명령
  • 토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
// var : 변수 선언 키워드 토큰
// sum : 식별자 토큰
// = : 연산자 토큰
// 1 : 리터럴 토큰
// + : 연산자 토큰
// 2 : 리터럴 토큰
// ; : 특수기호 토큰
var sum = 1 + 2;
  • 문은 선언문, 할당문, 조건문, 반복문 등으로 구분

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

function foo(){
  return 
    {}

  // 자동 삽입 결과 => return; {};
  // 개발자 예측 => return {};
}
  • 이처럼 개발자의 예측과 다른 동작을 할 수 있기 때문에 개발자가 의도한대로 세미콜론을 넣어주는 것을 권장

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

  • 모든 표현식은 문이지만 모든 문이 표현식은 아니다.
  • 포함관계로 따지면 표현식 < 문
  • 그렇다면 표현식이 아닌 문은 어떻게 구분할 수 있을까?
  • 값으로 평가될 수 있는 문은 표현식이고,
  • 값으로 평가될 수 없는 문은 표현식이 아니다.
  • 가장 간단하고 명료한 방법은 변수에 할당해 보는것
// 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다.
var y = var x;    //SyntaxError: Unexpected token var
// x = 10 은 10이라는 값으로 평가 되기 때문에 표현식이다.
var z = x = 10; 
// 조건문, 반복문은 값으로 평가될 수 없으므로 표현식이 아니다.
var foo = if(true){x = 100}
  • 표현식이 아닌 문은 undefined로 출력

댓글남기기