본문 바로가기

Backend/Javascript

[Javascript] - Statement

Statement (문장)

 

- 프로그래밍 언어는 표현 언어와 문장 언어로 나눌 수 있습니다.

 

문장 언어는 문장과 표현식을 갖고 있지만, 표현 언어는 표현식만 갖고 있습니다.

 

- 선언문

 

자바스크립트에는 모듈이나 함수 내에서 변수를 선언할 수 있는 세 가지 문장 (let, function, const) 이 있습니다.

 

let 문은 현재 스코프에 새로운 변수를 선언합니다. 모든 블록 (중괄호로 둘러쌓인 문장의 집합) 은 그만의 스코프를 생성합니다. 해당 스코프에 선언된 변수는 바깥쪽 스코프에서는 보이지 않습니다. let 문은 초기화 없이 변수를 선언할 수 있으며, 그럴 경우 undefined 로 값이 지정됩니다.

let a = { my: 1 };
let { my } = a; // my = 1

let b = [1, 2, 3];
let [one, two, three] = b; // one = 1, two = 2, three = 3

let 문은 구조분해 할당 (destructuring) 도 허용하며 위와 같이 사용할 수 있습니다.

 

function 선언문은 함수 객체를 만들고 이를 저장할 수 있는 변수를 지정합니다.

function tmp() {
  return 'hi';
}

function 선언문은 호이스팅 (함수 몸체나 모듈의 최상위로 옮겨지는 것) 됩니다. function 문에 의해 만들어진 모든 let 문 역시 함수 최상위 위치로 옮겨지고, 그 다음 함수 객체를 해당 변수로 할당하는 문장이 위치합니다.

그래서 function 문을 함수 몸체나 모듈 안에 두는것은 괜찮지만, if 나 switch, while, do, for 등 블록 내에 위치해서는 안됩니다.

 

const 문은 let 문과 비슷하지만 두 가지 중요한 차이점이 있습니다. 초기화가 반드시 있어야 하며, 변수가 나중에 선언될 수 없다는 것입니다. const 를 사용하면 프로그램을 훨씬 깔끔하게 만들 수 있어 더 선호하는 편입니다.

const 에 다른 값을 재할당할 순 없지만 지정된 값이 동결되지 않은 객체나 배열의 값을 바꾸는 것은 가능합니다.

 

- 표현식

 

문장이 올 자리에 쓰기 좋은 세 가지 자바스크립트 표현식으로는 할당문, 호출문, delete 가 있습니다. 자바스크립트에서는 이 세 가지 외 다른 모든 종류의 표현식을 문장 위치에 쓸 수 있기 때문에 컴파일러가 에러를 찾아내기가 쉽지 않습니다.

할당문은 변수의 참조를 바꾸거나, 변경 가능한 객체 혹은 배열을 수정하며 네 가지 부분으로 구성됩니다.

 

1. 좌측값 : 값을 받을 표현식

2. 할당 연산자 : =, +=, -=, *=, ...

3. 저장할 값을 나타내는 표현식

4. 세미콜론

 

++ 나 -- 와 같은 증감 연산자는 옛날 포인터 연산을 하기 위해 만들어진 연산자인데, 포인터 연산을 하지 않음에도 남아있는 연산자입니다. 또한 증감 연산자에는 전위, 후위 형태도 있는데 이들은 서로 바꿔서 쓰기는 쉽고 오류를 찾기는 어려우며, 버퍼 오버런과 관련된 에러등이 있기에 사용하지 않는 것이 좋습니다.

 

- 분기

 

자바스크립트는 두 개의 분기문 if 와 switch 를 갖고 있습니다. if 문으로 만들 수 없는 switch 문은 없으며 switch 문은 나쁜 습관과 오류를 유발할 위험이 있고 indent 도 좀 애매합니다. 따라서 if 문 사용을 권장합니다.

 

순수 함수 스타일로 코드를 작성할 것이라면 삼항 연산자를 쓰는 것이 좋습니다.

 

- 반복문

 

자바스크립트는 for, while, do 라는 세 가지 반복문을 제공합니다. for 문의 경우 반복문 내에서 처리할 배열 및 배열 요소와 연관된 변수 관리를 전부 개발자에게 맡기는데, 이런 경우 관련 변수 관리를 알아서 해주는 forEach 와 같은 배열 메서드를 사용하는 것이 좋습니다.

 

- 중단문

 

자바스크립트에는 네 가지 중단문 break / continue / throw / return 이 있고 이들 중 그 어떤 것도 goto 가 아닙니다.

break 문은 반복문을 빠져나갈 때 사용됩니다.

continue 문은 goto 문을 쓴 것처럼 반복문의 가장 꼭대기로 실행 흐름을 변경합니다.

throw 문은 예외를 발생시킵니다.

return 은 함수의 실행을 끝내고 반환 값을 지정합니다.

 

- 그 외

 

throw, try - catch, import - export 등은 다른 장에서 보도록 하겠습니다. debugger 문은 실행의 중단을 유발할 수 있는데, 개발 과정에서만 사용해야 하며 완성된 프로그램에서는 반드시 제거해야 합니다.

 

- 구두법

 

if 나 else 문에는 단일 문장이나 블록 모두 사용할 수 있지만, 블록에 문장이 하나밖에 없더라도 블록을 사용하는 것이 좋습니다.

자바스크립트에는 자동 세미콜론 삽입 기능이 있지만 잘못 동작할 수 있으므로 세미콜론을 꼭 넣은 코드를 작성하는 것이 좋습니다.

 

출처 : 자바스크립트는 왜 그 모양일까?

 

'Backend > Javascript' 카테고리의 다른 글

[Javascript] - Generator  (0) 2020.12.05
[Javascript] - Function  (0) 2020.11.28
[Javascript] - Bottom value  (0) 2020.11.14
[Javascript] - String  (0) 2020.11.07
[Javascript] - Object  (0) 2020.10.31