모던 자바스크립트 Deep Dive: 5장 표현식과 문

ahyes·2023년 6월 11일
0

05장 표현식

  • 값 : 표현식이 평가되어 생성된 결과
var sum = 10 + 20;

sum이 기억하는 메모리 공간에 저장된 것은 30으로 10 + 20은 할당 이전에 평가되어 값을 생성해야한다.
가장 기본적으로 값은 리터럴을 사용해 생성할 수 있다.

리터럴(Literal)

  • 사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳, 한글 등) 혹은 약속된 기호('',"",[],// 등)를 이용해 값을 생성하는 표기법

만약 숫자 리터럴3을 코드에 입력하면 자바스크립트 엔진은 이를 평가해 숫자 값 3을 새로운 메모리 셀에 생성한다.
코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성한다.

리터럴의 구분에 대해 추가적인 정보를 얻고싶다면 이곳을 참고하세요.

표현식(expression)

  • 값으로 평가될 수 있는 문
  • 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조

리터럴은 값으로 평가되기 때문에 리터럴도 표현식이다.

//20은 리터럴이고 자바스크립트 엔진에 의해 평가되거 값을 생성해 표현식이다.
var num = 20; 

//리터럴과 연산자로 이루어진 10 + 20은 평가되어 30을 생성하므로 표현식이다.
var num2 = 10 + 20;

//변수 식별자를 참조하면 변수값으로 평가됨. 값을 생성하지는 않지만 값으로 평가되기 때문에 표현식이다.
num;
//리터럴 표현식
10
"javascript"

//식별자 표현식( 선언이 이미 존재한다고 가정)
sum
my.name
arr[0]

//연산자 표현식
10+20
sum = 30
sum + 40 //표현식은 다른 표현식의 일부가 될 수 있다.

//함수/메서드 호출 표현식( 선언이 이미 존재한다고 가정 )
script()
my.getName()

문(statement)

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

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

var sum = 1 + 2;
//토큰: var, sum, =, 1, +, 2,;
//변수 선언문
var x;
//할당문
x =  1;

//함수 선언문
function foo(){}

//조건문
if(x>1){}

//반복문
for(var i = 0 ; i < 1; i++){}

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

  • 세미콜론(;)은 문의 종료를 뜻한다.

자바스크립트 엔진이 소스코드를 해석할 때 문의 끝이라 예측되는 지점에 세미콜론 자동 삽입 기능이 암묵적으로 수행되기 때문에 자바스크립트에서는 생략 가능하다.
하지만 제대로 동작이 예측되지 않는 경우가 있기 때문에 되도록 생략하지 말도록하자.

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

  • 변수에 할당해 보면 가장 간단하고 명료하게 구별할 수 있다.
var foo = var x; //SyntaxError: Unexpected token var

var x;
x = 10; 
//표현식인 문은 값처럼 사용 가능
var bar = x = 10;
profile
티스토리로 이사갑니다. https://useyhnha.tistory.com/

0개의 댓글