Program Club

JavaScript와 Python의 세미콜론의 차이점은 무엇입니까?

proclub 2020. 12. 14. 20:08
반응형

JavaScript와 Python의 세미콜론의 차이점은 무엇입니까?


Python과 JavaScript 모두 개발자가 세미콜론을 사용하거나 생략 할 수 있습니다. 그러나 나는 종종 (책과 블로그에서) 파이썬에서 세미콜론을 사용해서는 안되는 반면 자바 스크립트에서는 항상 사용해야한다고 제안하는 것을 보았다.

언어가 세미콜론을 사용하는 방식간에 기술적 차이가 있습니까? 아니면 문화적 차이일까요?


파이썬의 세미콜론은 전적으로 선택 사항입니다 (물론 한 줄에 여러 명령문을 사용하려는 경우는 제외). 저는 개인적으로 모든 문장 끝에 세미콜론이있는 파이썬 코드가 매우보기 흉해 보인다고 생각합니다.

이제 Javascript에서 세미콜론을 쓰지 않으면 자동으로 줄 끝에 1 이 삽입 됩니다. 그리고 이것은 문제를 일으킬 수 있습니다. 중히 여기다:

function add(a, b) {
  return
    a + b
}

이것이 반환한다고 생각 a + b하지만 Javascript는 당신을 능가하고 이것을 다음과 같이 봅니다.

function add() {
  return;
    a + b;
}

undefined대신 돌아 옵니다.

1 자세한 내용과주의 사항은 27 페이지, 항목 7.9- ECMAScript 언어 사양 에 자동 세미콜론 삽입 을 참조하십시오.


이것은 나를 가장 오랫동안 혼란스럽게 만들었다. 나는 그것이 단지 문화적 차이라고 생각했고, 세미콜론 삽입이 언어에서 최악의 기능이라고 불평하는 모든 사람들은 바보라고 생각했습니다 . NullUserException의 답변 에서 자주 반복되는 예제는 들여 쓰기를 무시하고 Python 이이 경우 JavaScript와 동일하게 동작하기 때문에 나를 흔들리지 않았습니다.

그러던 어느 날 나는 다음과 같이 막연하게 썼다.

alert(2)
(x = $("#foo")).detach()

다음과 같이 해석 될 것으로 예상했습니다.

alert(2);
(x = $("#foo")).detach();

실제로 다음과 같이 해석되었습니다.

alert(2)(x = $("#foo")).detach();

이제 세미콜론을 사용합니다.

자바 스크립트는 것 하나 이러한 경우 세미콜론으로 줄 바꿈을 치료 :

  • 그렇지 않은 구문 오류입니다.
  • 개행은 throw또는 return키워드와 표현식 사이에 있습니다.
  • 개행은 continue또는 break키워드와 식별자 사이에 있습니다.
  • 개행은 변수와 접미사 ++또는 --연산자 사이에 있습니다.

이로 인해 예상 한 동작이 아닌 경우가 남습니다. 어떤 사람들 이이 필요한 경우에만 세미콜론을 사용 규칙을 채택했다. 나는 항상 그것들을 사용하는 표준 규칙을 따르는 것을 선호합니다. 지금은 그것이 무의미하지 않다는 것을 알고 있습니다.


1 몇 가지 사소한 세부 사항을 생략했습니다 . 정확한 설명은 ECMA-262 5e 섹션 7.9참조하십시오 .
2 Twitter Bootstrap 은 주목할만한 예입니다.


구문 적 문제를 제외하고는 부분적으로 문화적입니다. 파이썬 문화에서 모든 외부 문자는 혐오이며 공백이나 영숫자가 아닌 문자는 두 배입니다.

따라서 선행 $ 기호, 세미콜론 및 중괄호와 같은 것은 좋아하지 않습니다. 하지만 코드에서 수행하는 작업은 사용자에게 달려 있지만 언어를 실제로 이해하기 위해서는 구문을 배우는 것만으로는 충분하지 않습니다.


JavaScript는 "C처럼 보이도록"설계되었으므로 세미콜론은 문화의 일부입니다. 파이썬 구문은 세미콜론이 "누락"되어도 프로그래머가 불편 함을 느끼지 않도록 충분히 다릅니다.


The answer why you don't see them in Python code is: no one needs them, and the code looks cleaner without them.

Generally speaking, semicolons is just a tradition. Many new languages have just dropped them for good (take Python, Ruby, Scala, Go, Groovy, Io for example). Programmers don't need them, neither do compilers. If a language lets you not type an extra character you never needed, you will want to take advantage of that, won't you?

It's just that JavaScript's attempt to drop them wasn't very successful, and many prefer the convention to always use them, because that makes code less ambiguous.


It is mostly that python looks nothing like java, and javascript does, which leads people to treat it that way. It is very simple to not get into trouble using semicolons with javascript (http://mislav.uniqpath.com/2010/05/semicolons/), anything else is FUD.

참고URL : https://stackoverflow.com/questions/7219541/what-is-the-difference-between-semicolons-in-javascript-and-in-python

반응형