본문 바로가기

개발/javascript

"문"

"문(statement)"과 "표현식(expression)"이라는 용어가 자주 등장할 것이므로 문과 표현식은 확실히 이해할 필요가 있다.
문과 표현식을 구별하고 해석할 수 있다면 자바스크립트 엔진의 입장에서 코드를 읽을 수 있고 실행결과 예측에 도움이 된다.

문(statement)은 프로그램을 구성하는 기본 최소 단위이자 최소 실행 단위이다.
문의 집합으로 이루어진 것이 바로 프로그램이며 문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍이다.

문은 여러 토큰들로 구성된다. 토큰(token)이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다. 예를 들어, 키워드, 식별자, 연산자, 리터럴, 세미콜론(;)이나 마침표(.) 등의 특수 기호는 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소이므로 모두 토큰이다.

변수 선언문이다. 이 변수 선언문은 var라고 하는 변수 선언 키워드, sum은 식별자, =는 연산자 1은 리터럴 +는 연산자 2는 리터럴이다.

이러한 토큰들. 즉, 문법적의미를 가지고 있고 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소로 이루어져 있다.

 

문은 명령문이라고도 부르는데 이는 컴퓨터에게 내리는 명령이기 때문이다.

문이 실행되면 우리가 작성한 코드대로 명령이 실행되고 무슨 일인가가 일어나게 된다.

변수선언문이 실행되게 되면 변수가 실행된다.

 

// 변수 선언문
var x;

// 표현식 문(할당문)
x = 5;

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

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

// 반복문
for (var i = 0; i < 2; i++) { console.log(i); }

문은 세미콜론(;)으로 끝나야 한다. 단, 0개 이상의 문을 중괄호로 묶은 코드 블록 { ... } 뒤에는 세미콜론을 붙이지 않는다.

 

문의 끝에 붙이는 세미콜론은 옵션이다. 세미콜론 자동 삽입 기능(ASI, automatic semicolon insertion)이 있기 때문에 세미콜론을 생략해도 암묵적으로 세미콜론을 추가한다.

그렇지만 왠만하면 세미콜론을 붙여주는게 좋다!

 

function foo () {
	return
    	{}
    // ASI의 동작 결과 => return; {};
    // 개발자의 예측 => {};
}

console.log(foo()); // undefined

var bar = function () {}
(function() {})();
// ASI의 동작 결과 => var bar = function () {}(function() {})();
// 개발자의 예측 => var bar = function () {}; (function() {})();
// TypeError: (intermediate value)(...) is not a function

ESLint와 같은 정적 분속 도구에서도 세미콜론 사용을 기본으로 설정하고 있고 TC39(ECMAScript 기술 위원회)도 세미콜론 사용을 권장하는 분위기다. 나도 앞으로는 세미콜론 빼먹지 않고 잘 붙여보도록 하겠다.

'개발 > javascript' 카테고리의 다른 글

변수  (0) 2023.09.10
표현식인 문과 표현식이 아닌 문  (0) 2023.09.10
표현식  (0) 2023.09.10
리터럴  (0) 2023.09.10
  (0) 2023.09.10