자동 호출 기능 전 세미콜론?
자바스크립트에서 자동 호출 기능 전에 세미콜론을 사용하면 어떤 이점이 있습니까?저는 이 접근법을 몇몇 인기있는 jQuery 플러그인에서 보았는데 자바스크립트에서 제가 모르는 다음으로 멋진 것인지 궁금합니다.
자동 호출 기능이 있는 두 파일을 연결하면 다음과 같습니다.
파일 A:
(function(){...A...})()
파일 B:
(function(){...B...})()
파일 A+B:
(function(){...A...})()(function(){...B...})()
구분자가 없는 문장이 두 개 있습니다.파일을 함께 저장한 다음 파일을 최소화할 때 발생합니다.
이제 파일 B의 작성자는 세미콜론을 앞에 놓습니다.
파일 B2:
;(function(){...B2...})()
그리고 작동하는 스크립트를 얻을 수 있습니다.
(function(){...A...})();(function(){...B2...})()
자체 호출 함수는 괄호로 둘러싸여 있으며, 자바스크립트에서 괄호는 다음과 같은 의미로 오버로드됩니다.
- 우선 순위를 재정의하기 위해 식을 그룹화하는 중:
(x + y) * z
- 기능 적용 :
f()
함수 앞에 세미콜론을 붙이면 괄호가 함수 응용 프로그램과 혼동될 때 함수가 앞에 있는 것에 대한 인수가 되지 않습니다.
고려하다
var x = 42
(function () { ... })()
와 같음
var x = 42(function () { ... })()
그렇지만
var x = 42
;
(function () { ... })()
와 같음
var x = 42;
(function () { ... })()
저는 모든 자바스크립트를 세미콜론이 없는 스타일로 씁니다.자동 세미콜론 삽입(ASI)으로 인해 모든 줄의 끝에 세미콜론을 사용하지 않고 쓸 때 처음에는 "혼잡" 수 있는 몇 가지 특수한 경우가 있습니다.
연산자를 사용하여 최상위 표현식을 시작하는 것, a
(
(열린 괄호) 이 경우 대부분의 다른 연산자와 마찬가지로 이전 식을 계속할 수 있으므로 "세미콜론 자동 삽입"을 억제합니다. (이는 일반적으로 자체 호출 기능을 사용할 때만 발생합니다.)#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
'programing' 카테고리의 다른 글
SQLPlus의 연결을 끊거나 종료하지 않고 오류가 발생할 때 SQLPlus에서 스크립트를 종료하고 SQLPlus 프롬프트로 돌아가려면 어떻게 해야 합니까? (0) | 2023.10.18 |
---|---|
SQL에서 NULL이 부울 식으로 전파되지 않는 이유는 무엇입니까? (0) | 2023.10.18 |
MySQL 월별/년 단위 반복 이벤트 (0) | 2023.10.18 |
Excel/VBA: 단일 셀을 인수로 전달 (0) | 2023.10.18 |
Oracle sql developer 3.2에서 sql 워크시트 표시 전환 방법 (0) | 2023.10.18 |