본문 바로가기

공부한 내용/javascript

문(statements) (ex. 선언문, 반복문..)

지금까지 반복문이나 조건문, 선언문이란 말을 사용해왔는데 문(statements)이 정확히는 무엇인지 몰랐습니다.

함수 표현식과 함수 선언문에 대해 공부하던 중 표현식과 선언문이 어떻게 다른지가 궁금해졌고, 문을 살펴보면 되겠다 싶어 정리합니다.

 

에 대해 얘기하기 위해서는 값(value)리터럴(literal), 표현식(expression)을 먼저 짚고 넘어갸아 합니다.

 

간단하게 정리하자면, 

  • : (표현식)이 평가(evaluate)되어 생성된 결과를 말합니다. (10 + 20의 은 30입니다.). 변수란 하나의 값을 저장하기 위해 확보한 메모리 공간(의 이름)이죠.
  • 리터럴: 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation)을 말합니다. 코드를 작성하면서 사용하는 숫자, 알파벳 또는 객체나 배열 등이 모두 리터럴입니다. 자바스크립트 엔진은 코드가 실행되는 시점인 런타임에 리터럴을 평가해 값을 생성합니다
  • 표현식: 값으로 평가될 수 있는 문(statements)을 말합니다. 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존의 값을 참조합니다. 리터럴은 런타임시 평가되어 값을 생성하므로 리터럴은 그 자체로 표현식입니다. 이미 선언 및 할당이 된 변수를 참조하는 것 역시 표현식입니다.

이제 문에 대해 차근차근 설명해보겠습니다.

 

문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위입니다. 문을 작성하고 순서에 맞게 나열하는 프로그래밍입니다.

 

문은 여러 토큰(token)으로 이루어져 있습니다. 토큰이란 문법적인 의미를 가지면서, 더 이상 문법적으로 나눌 수 없는 코드의 기본 요소입니다. 

var sum = 1 + 2;

위의 예시 한 줄이 하나의 이고, 문을 이루는 키워드(var), 식별자(sum), 연산자(=, +), 리터럴(1, 2), 세미콜론(;)이 모두 토큰입니다.

 

선언문, 할당문, 조건문, 반복문 등으로 구분할 수 있습니다.

// 변수 선언문
var x;

// 할당문
x = 5;

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

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

// 반복문
for (var i = 1; i < 2; ++i) {}
cf. 세미콜론문의 종료를 나타냅니다. 0개 이상의 문을 중괄호로 묶은 코드 블록({...}) 뒤에는 세미콜론을 붙이지 않습니다. 세미콜론은 붙여도 되고 안 붙여도 됩니다. 하지만, eslint와 같은 도구를 사용해 저장할 때마다 자동으로 세미콜론을 붙일 수 있으니 세미콜론을 붙이도록 합시다. 자세한 설명은 책을..

 

 

표현식? 문?

문에는 표현식인 문표현식이 아닌 문이 있습니다.

  • 표현식이 아닌 문값으로 평가될 수 없는 문입니다(ex. 변수 선언문, var x;).
  • 표현식인 문값으로 평가될 수 있는 문입니다(ex. 할당문, x = 5;).

둘을 구분하는 방법변수에 할당해보는 것입니다.

// 변수 선언문은 값으로 평가될 수 없으므로 변수에 할당이 안 됨.
var foo = var x; // SyntaxError: Unexpected token var
// 표현식인 문은 값으로 사용할 수 있음.
var foo = x = 100;
console.log(foo); // 100

 


출처

https://book.naver.com/bookdb/book_detail.nhn?bid=16710547

 

모던 자바스크립트 Deep Dive

269개의 그림과 원리를 파헤치는 설명으로 ‘자바스크립트의 기본 개념과 동작 원리’를 이해하자!웹페이지의 단순한 보조 기능을 처리하기 위한 제한적인 용도로 태어난 자바스크립트는 과도

book.naver.com

 

'공부한 내용 > javascript' 카테고리의 다른 글

함수  (0) 2022.03.02
객체 리터럴  (0) 2022.03.01
실행 컨택스트 (0)  (0) 2022.02.24
javascript는 인터프리터 언어일까?  (0) 2022.02.23
이벤트 루프란?  (0) 2022.02.23