오늘 첫 페어프로그래밍을 하다 문득 든 궁금증....
자바, C 등의 언어는 세미콜론을 쓰지 않으면 무.조.건 Error가 나온다. 파이썬은 세미콜론을 쓰지 않고, 중괄호마저도 쓰지 않는다.
그러나 내가 정복해야 하는 자바스크립트는, 써도 실행되고..... 안 써도 실행된다..... 세미콜론은 쓰든, 안쓰든 어쨋든 방향을 통일해야 하기 때문에!
그래서 오늘은 이 문제를 찾아보았다.
이 문제를 아주 잘 정리한 글이 있는데, 글 상단에 링크를 걸어두었다. 이 글을 읽기 쉽게 요약해 보았다.
우리는 한 문장을 마칠 때 .
온점을 찍어 문장의 끝남을 나타낸다.
C계열 언어에서 세미콜론이 바로 이 온점 역할을 하는 것이다.
학부 시절 세미콜론을 찍는 게 너무도 당연했던지라 파이썬을 처음 배울 때 꽤나 애를 먹었다. 🤣
세미콜론을 통해 우리는 한 줄에 한 문장
이 아닌 여러 문장을 쓰거나, 문장을 다음 줄에서 끝 마칠 수 있다.
이 말은 곧....가독성이 안 좋게 써도 컴퓨터는 알아 먹는다는 뜻.
그러나 우리의 코드는 컴퓨터만 읽지 않는다. 나의 동료 혹은 내가 다시 읽을 수도 있다.
한 줄에 하나의 명령문만 있다면 굳이 세미콜론은 필요하지 않다.
자바스크립트에서는 세미콜론을 쓰는 것이 기본!!이다.
그럼에도 세미콜론 없이 인터프리트 과정에서 구문 오류가 발생하지 않는 이유는 바로 세미콜론 자동 삽입(ASI, automatic semicolon insertion)
때문이다.
인터프리터가 문장의 끝이라고 생각되는 지점에 자동으로 세미콜론을 붙여주는 기능이다.
하지만 이 ASI의 동작 규칙은 애무 복잡하고 예측하기 힘들어 말썽을 빚을 때가 많다고 한다!
// 1. 원래 코드
function getData() {
return
{
title: 'Maintainable Javascript',
author: 'Nicholas C. Zakas'
}
}
// 2. 파서가 생각하는 코드
function getData() {
return; // return에서 함수는 종료되고 undefined를 리턴한다.
{
title: 'Maintainable Javascript',
author: 'Nicholas C. Zakas'
};
}
// 3. 세미콜론은 빠졌지만 정상 동작하는 코드
function getData() {
return {
title: 'Maintainable Javascript',
author: 'Nicholas C. Zakas'
}
}
위 세가지 종류의 코드를 이해하겠는가?