2013-12-20 4 views
0

인가가 자바 스크립트 모듈 간의 차이 :자바 스크립트 모듈 패턴 구현

(function(){}()) 

크록 포드에 의해

(function(){})() 

책 "좋은 부분"에서 먼저

대. 두 번째는 Typescript로 생성 된 코드입니다.

+1

디자인 패턴과의 관계는 어떻습니까? – thefourtheye

+0

정확한 복제 [익명 JavaScript 함수 자동 실행을위한 괄호 위치] (http://stackoverflow.com/questions/3384504/location-of-parenthesis-for-auto-executing-anonymous-javascript-functions) 및 [(...()) 대 (...)() in javascript closures] (https://stackoverflow.com/questions/8774425/vs-in-javascript-closures) – Bergi

+0

모듈 패턴이 디자인 패턴이라고 생각했습니다. 그) – user1407492

답변

0

아니요,이 두 함수와 호출 방법에는 차이가 없습니다. 두 경우 모두 익명의 함수를 생성하고 즉시 실행합니다.

은 "외부"괄호가 필요한 유일한 이유는 자바 스크립트 파서가 문을 볼 것으로 예상 될 때이 function를 보는 경우,이 함수 선언 될 것입니다 다음 무엇을 가정한다는 것이다. 그러나 우리는 함수 의 표현식을으로하고 싶습니다. 그래서 처음에 (을 주면 표현식을 기대하는 상태가됩니다.

그러나 ()이 함수를 호출하는 곳 (} 또는 바깥 쪽)은 아무런 차이가 없습니다.

0

아니요 차이가 없습니다. 둘 다 동일하게 작동합니다. 나는 후자를 사용하는 경향이있다. 그것은 단지 더 이해하기 쉬운 것처럼 보인다. (function(){})은 함수를 정의한 다음 ()으로 호출합니다. 두 경우 모두 첫 번째 ( 앞에 (선행) 세미콜론을 사용하십시오. Reference

1

다른 것은 없습니다. 함수가 어떤 값도 반환하지 않는 경우 세 번째 옵션을 쓸 수 있습니다.

!function(){}() 
관련 문제