programing

자동 호출 기능 전 세미콜론?

muds 2023. 10. 18. 23:07
반응형

자동 호출 기능 전 세미콜론?

자바스크립트에서 자동 호출 기능 전에 세미콜론을 사용하면 어떤 이점이 있습니까?저는 이 접근법을 몇몇 인기있는 jQuery 플러그인에서 보았는데 자바스크립트에서 제가 모르는 다음으로 멋진 것인지 궁금합니다.

자동 호출 기능이 있는 두 파일을 연결하면 다음과 같습니다.

파일 A:

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

파일 B:

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

파일 A+B:

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

구분자가 없는 문장이 두 개 있습니다.파일을 함께 저장한 다음 파일을 최소화할 때 발생합니다.

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

파일 B2:

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

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

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

자체 호출 함수는 괄호로 둘러싸여 있으며, 자바스크립트에서 괄호는 다음과 같은 의미로 오버로드됩니다.

  1. 우선 순위를 재정의하기 위해 식을 그룹화하는 중:(x + y) * z
  2. 기능 적용 :f()

함수 앞에 세미콜론을 붙이면 괄호가 함수 응용 프로그램과 혼동될 때 함수가 앞에 있는 것에 대한 인수가 되지 않습니다.

고려하다

var x = 42

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

와 같음

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

그렇지만

var x = 42

;

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

와 같음

var x = 42;

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

모든 자바스크립트를 세미콜론이 없는 스타일로 씁니다.자동 세미콜론 삽입(ASI)으로 인해 모든 줄의 끝에 세미콜론을 사용하지 않고 쓸 때 처음에는 "혼잡" 수 있는 몇 가지 특수한 경우가 있습니다.

  1. 연산자를 사용하여 최상위 표현식을 시작하는 것, a((열린 괄호) 이 경우 대부분의 다른 연산자와 마찬가지로 이전 식을 계속할 수 있으므로 "세미콜론 자동 삽입"을 억제합니다. (이는 일반적으로 자체 호출 기능을 사용할 때만 발생합니다.)

  2. #2 농담: 없어요! (단 하나의 규칙만 배우면 추가 세미콜론 없이도 삶을 즐길 수 있습니다;-)

세미콜론이 없는 스타일로 쓰기 때문에 항상 다음과 같이 씁니다(함수 표현이 자연스럽게 여러 줄에 걸쳐 있을 수 있습니다).

;(FunctionExpression)()

경우에는 "안전"이나 "오류를 잡으려고" 하는 것이 아닙니다. (솔직히, 스타일이 세미콜론을 사용하는데 세미콜론을 잊어버린다면, 이미 다른 곳에서 오류를 만들어서 다음과 같은 글을 쓰는 것입니다.;"안전"을 위한 시작은 호그워시(hogwash)입니다.아니요. 제 경우에는 제가 선택한 스타일에 대한 지식과 일관성을 위해 행을 시작하는 연산자가 이전 행의 식을 계속할 수 있다는 것을 알고 있습니다.

자바스크립트 참조: 자세한 내용은 세미콜론 삽입(Everything You Need To Know)(제가 이 주제에 대해 본 기사 중 가장 좋은 기사입니다.

해피 코딩.

저는 세미콜론이 Internet Explorer 8에서 오류를 유발하고 있었고(적어도 IETESTER가 말한 것과 같습니다), UI 탭이 제대로 작동하지 않도록 하고 있었습니다.

오류 메시지는Invalid character in jquery.all.ui.js Line: 1. Char: 1.

나는 완전히 우연히 세미콜론을 우연히 발견했습니다.내가 제거했을 때;로부터;(function($)effects이나 기능의 상실 없이 효과가 있었습니다.저는 드루팔을 사용하고 있는데, 이것이 그 문제와 관련이 있는지는 모르겠습니다.

언급URL : https://stackoverflow.com/questions/7365172/semicolon-before-self-invoking-function

반응형