공부한 내용/javascript
문(statements) (ex. 선언문, 반복문..)
hyongti
2022. 2. 28. 17:36
지금까지 반복문이나 조건문, 선언문이란 말을 사용해왔는데 문(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