programing

자체 호출 기능 앞에 세미콜론?

nasanasas 2020. 8. 23. 09:19
반응형

자체 호출 기능 앞에 세미콜론? [복제]


이 질문에 이미 답변이 있습니다.

자바 스크립트에서 자체 호출 함수 앞에 세미콜론을 사용하면 어떤 이점이 있습니까? 나는 몇몇 인기있는 jQuery 플러그인에서이 접근 방식을 보았고 이것이 내가 모르는 JavaScript에서 다음으로 멋진 일인지 궁금합니다. 미리 감사드립니다, 여러분!


다음과 같은 자체 호출 함수를 사용하여 두 파일을 연결하는 경우 :

파일 A :

(function(){...A...})()

파일 B :

(function(){...B...})()

파일 A + B :

(function(){...A...})()(function(){...B...})()

구분 기호가없는 두 개의 문이 있습니다. 이것은 파일을 함께 분류 한 다음 축소 할 때 발생합니다.

이제 파일 B의 작성자는 앞에 세미콜론을 넣습니다.

파일 B2 :

;(function(){...B2...})()

그리고 작동하는 스크립트를 얻을 수 있습니다.

(function(){...A...})();(function(){...B2...})()

자체 호출 함수는 괄호로 둘러싸여 있으며 JavaScript에서 괄호는 오버로드되어

  1. 우선 순위를 재정의 할 그룹화 표현식 : (x + y) * z
  2. 기능 신청 : f()

함수 앞에 세미콜론을 넣으면 괄호가 함수 응용 프로그램과 혼동 될 때 함수가 앞에 오는 인수가되는 것을 방지합니다.

치다

var x = 42

(function () { ... })()

와 같다

var x = 42(function () { ... })()

그러나

var x = 42

;

(function () { ... })()

와 같다

var x = 42;

(function () { ... })()

내가 쓰는 모든 세미콜론 프리 스타일에서 자바 스크립트를. ASI (Automatic Semicolon Insertion)로 인해 모든 줄 끝에 세미콜론없이 쓸 때 처음에는 "혼란 스러울"수있는 몇 가지 특수한 경우가 있습니다.

  1. 오퍼레이터와 최상위 식 시작 하는 (이 경우 (열린 괄호), 대부분의 다른 사업자처럼 , 수 계속 이전 식을 따라서 「세미콜론 자동 삽입 "을 억제한다. (이것은 일반적으로 자체 호출 기능을 사용할 때만 발생 합니다.)

  2. # 2에 대한 농담입니다. 하나도 없습니다! (하나의 규칙 만 배우면 추가 세미콜론 없이도 인생을 즐길 수 있습니다 ;-)

세미콜론이없는 스타일로 작성 했으므로 항상 다음과 같이 작성합니다 (함수 표현식이 자연스럽게 여러 줄에 걸쳐있을 수 있음).

;(FunctionExpression)()

에서 경우는 "안전"또는 "오류 잡기"노력 (당신의 스타일은 세미콜론을 사용하고 세미콜론을 잊지하는 경우 솔직히, 당신은 한에 대해 아닙니다 이미 생성 된 오류가 다른 곳에 쓰기 ;"안전"에 대한 시작에) 개판이다. 아니; 내 경우에이 수행됩니다 일관성지식을 내 선택한 스타일의 것을 "알고" 연산자와 라인을 시작하는 것은 이전 라인에서 식을 계속할 수 있습니다.

자세한 내용은 JavaScript : 세미콜론 삽입 (알아야 할 모든 것) 을 참조하십시오 (이 주제에 대해 지금까지 본 기사 중 최고의 기사입니다).

즐거운 코딩입니다.


For me, the semi colon was triggering an error in Internet Explorer 8 (or at least that's what IETester said), and preventing the ui tabs from working properly.

The error message was Invalid character in jquery.all.ui.js Line: 1. Char: 1.

I stumbled on the semi-colon completely by chance. When I removed the ; from the ;(function($) it worked, seemingly without side-effects or loss of functionality. I am using Drupal, don't know whether this has anything to do with the matter.

참고URL : https://stackoverflow.com/questions/7365172/semicolon-before-self-invoking-function

반응형