2012-05-19 2 views
2

두 가지 방법을 보았습니다 ... 첫 번째가 나에게 가장 의미가 있습니다.모듈 패턴 구문의 올바른 사용?

자체 실행 괄호는 함수 대괄호 바로 뒤에 위치합니다. 모든 것은 괄호 사이에 포함되어 함수 표현식으로 만듭니다. 자동 실행 괄호는 함수 표현식을 작성 괄호 후 장소 here

(function() { 
    // ... all vars and functions are in this scope only 
    // still maintains access to all globals 
}()); 

이 스타일을 참조. 나는 VAR 구문에 차이가 있는지 확실하지 않습니다 here

var Var = (function (window, undefined) 
{ 

})(); 

참조 ...?

+0

모듈 패턴이 아닌 [즉각적인 기능] (http://stackoverflow.com/questions/939386/immediate-function-invocation-syntax)에 대해 이야기하는 것처럼 보입니다. 그렇다면 또 다른 접근법 인'! function() {/ * do stuff * /}(); '하지만 그 질문은 무엇 이었습니까? – kojiro

+0

위의 두 예제 모두 모듈 패턴입니다 (참조 있음). 나는 왜 괄호가 각각 다른 장소에 있는지 알고 싶다. –

답변

4

귀하의 질문에 대한 답변은 내 첫 코멘트에서 immediate functions에 관한 링크에 있습니다. 본질적으로 함수 선언 자체가 괄호 안에 싸여있는 한 즉각적인 함수를 원한다면, 호출하는 괄호가 중괄호 뒤에 오거나 감싸는 괄호 뒤에 오는 것은 중요하지 않습니다. 당신이 포장 괄호를 원하지 않는 경우에는, 다음 Var에 할당이 작동하므로, 관련된다 :

var Var = function() { 
    // do stuff; return stuff; 
}(); 

하지만이되지 않습니다

function() { 
    // do stuff; 
}(); 

는 단지 때문에 함수 선언 다음에 예기치 않은 괄호 쌍 (구문 오류)이옵니다.

+0

var에 할당되지 않은 즉치 함수는 괄호 안에 래핑해야하며, var에 할당 된 즉치 함수는 래핑 괄호를 사용할 필요가 없습니다. Cool. 이것을 모듈 패턴에 관한 제 질문과 관련시킬 수 있습니까? 제가 위에 쓴 두 번째 예제가 줄 바꿈이 필요 없다는 것을 과장하여 암시하고 있습니까? –

+0

엄밀히 말하면 포장 괄호는 필요하지 않지만 과도 함을 고려하지 않습니다. 코드를 읽는 누군가가 나중에 * 실행될 * Var에 * function *을 할당한다고 생각할 수도 있습니다. 그것을 괄호로 묶음으로써 당신은 뭔가 다른 일이 일어나고 있음을 분명히합니다. – kojiro

+0

O.K. 당신이 두 가지 방법 중 하나를 할 수있는 것처럼 보이는 경우 - 혼란을 피하기 위해 한 가지 방법이 기본값이어야합니다. 나는 항상 내 괄호를 함수 대괄호 바로 뒤에 넣으므로이 함수가 내게 가장 이해하기 쉽다. 즉각적인 함수를 나타내는 것이다. –

0

실제로 두 가지 패턴입니다. 두 번째 패턴은 the revealing module pattern이라고하며 일부 지역 주민이 전역 이름 공간에 나타납니다. 사이에는 차이가 없습니다

+0

나를 잊어 버리는 한 가지는 모든 함수가 다른 함수를 반환하도록 작성 될 수 있다는 사실입니다. 이것은 private/public 변수와 함수를 가진 함수를 작성할 수있게합니다. 모듈 패턴 또는 노출 모듈 패턴을 사용하여 얻은 유일한 결과는 전역 가져 오기입니다. 나는 기본적으로 b.c.을 사용한다. 다른 모든 사람들은 ...하지만 기능이 본질적으로 똑같은 일을하는 것처럼 보입니다. –

3

:

(function() {})(); 

(function() {}()); 

비록 초 더글러스 크록 포드 지지자 (그래서 JSLint는 제 1 호 양식에 대해 불평 할 것이다). 그는 첫 번째가 "역효과"라고 ​​말합니다. 그것이 의미하는 바는 ... 나는 첫 번째를 선호합니다.

+0

그것은 함수에 대한 '연산'입니다 ... 즉각적으로 작동합니다 ... 작동하는 것과 가까운 곳에 두는 것이 좋습니다 ... 내 1 센트. –

+0

나는 외부 괄호를 완전히 떨어 뜨릴 지 확신하지 못한다. 나를 위해 잘 작동합니다. – weiglt