Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

JavaScript와 Python의 세미콜론 차이점 완벽 정리

세미콜론(;)은 프로그래밍 언어마다 그 역할과 필요성이 다릅니다. 특히 PythonJavaScript는 모두 세미콜론이 선택 사항이라는 공통점이 있지만, 그 처리 방식에는 중요한 차이가 있습니다.

Python에서의 세미콜론

Python에서 세미콜론은 완전히 선택 사항입니다. 문장의 끝을 줄바꿈으로 구분하기 때문에 일반적인 코드 작성 시 세미콜론을 붙이지 않습니다. 한 줄에 여러 문장을 나란히 쓰고 싶을 때만 간혹 사용될 뿐입니다.

JavaScript에서의 세미콜론과 ASI

JavaScript 역시 세미콜론을 생략할 수 있습니다. 하지만 세미콜론을 붙이는 것이 좋은 습관으로 권장되며, 특정 문법 상황에서는 사실상 필수가 되기도 합니다.

만약 필요한 위치에 세미콜론을 넣지 않으면, JavaScript 엔진이 자동으로 세미콜론을 삽입해 줍니다. 이를 자동 세미콜론 삽입(Automatic Semicolon Insertion, ASI)이라고 부릅니다.

문제는 이 자동 삽입이 개발자의 의도와 다르게 동작할 수 있다는 점입니다. 세미콜론이 임의로 추가되면서 코드의 원래 의미가 달라질 수 있기 때문입니다.

ASI로 인한 문제 예시

다음은 세미콜론 없이 작성된 함수입니다:

function sub (p, q) {
    return
    p + q
}

이 코드는 개발자가 의도한 대로 p + q의 결과를 반환하는 것처럼 보이지만, 실제로는 아래와 같이 해석됩니다:

function sub (p, q) {
    return;
    p + q;
}

return 키워드 바로 뒤에서 줄바꿈이 일어나면, ASI 규칙에 따라 엔진이 자동으로 세미콜론을 삽입합니다. 그 결과 p + q는 절대 실행되지 않는 도달 불가능한 코드(dead code)가 되고, 이 함수는 항상 undefined를 반환하게 됩니다.

결론

Python에서는 세미콜론이 거의 사용되지 않으며, 생략해도 전혀 문제가 되지 않습니다. 반면 JavaScript에서는 생략이 가능하더라도 ASI가 코드의 의미를 예기치 않게 변경할 수 있으므로, 매 문장 끝에 세미콜론을 명시적으로 붙이는 것이 안전하고 권장되는 스타일입니다.