2013-08-27 3 views
0

코드 아래의 내용, 작동 방법 및 사용 이유에 대해 누군가 설명 할 수 있습니까?괄호 안의 이상한 기능의 사용

왜 함수가 대괄호 안에 있는지, 중괄호 뒤에 오는 대괄호인지 이해할 수 없습니다.

(function() { 
    //Some javascript code... 
}()); 

감사합니다.

편집/후속 질문 : 나는 더 나은 jQuery를 함께 사용하면 않는 이상,이 어떤 영향을 미칠 것이라고 이해 이제

:

자동 실행 기능입니다
 $(document).ready(function() { 

      (function() { 
       //code here 
      }()); 

     }); 
+0

이해할 수있는 비트 (함수)를 변수 이름으로 바꾼 다음 그 변수가 어떻게 보이는지 생각해보십시오. '(foo()); ' –

+0

고마워. jQuery 예제와 함께 사용하면 어떨까요? – PostureOfLearning

답변

3

. 익명의 함수를 생성하고 즉시 실행합니다.

새로운 범위를 만드는 등의 많은 용도로 사용할 수 있습니다.

var x = 10 
(function() { 
    var x = 5 
}()) 
alert(x) // 10 
+0

답변 해 주셔서 감사합니다. 게시물의 수정 내용에 자유롭게 의견을 말하십시오. – PostureOfLearning

3

이것은 자체 실행 익명 기능입니다.

(); 

그 괄호

가 앞의 괄호에 포함 된 모든 원인 :

(function(){ 
    //Normal code goes here 
}) 

진짜로 흥미로운 부분은 우리가 마지막에이 권리를 추가 할 때 발생하는 것입니다 :

먼저 익명 함수입니다 즉시 실행될 수 있습니다.

자바 스크립트의 기능 수준 범위가 있습니다. 익명 함수 내에서 정의 된 모든 변수와 함수는 바깥 쪽 코드에서 효과적으로 사용할 수 없으므로 클로저를 사용하여 효과적으로 외부 세계로부터 자신을 봉인합니다.

이 디자인 패턴은 모듈 식 자바 스크립트에 유용합니다.

여기에서 자세한 내용을보실 수 있습니다 What is the purpose of a self executing function in javascript?

+0

감사. 나는 지금 그것을 얻는다. .. =) 또한 나의 지위에서 편집에 대해 해설해라. – PostureOfLearning

0

@doornob가 올바른지. 그러나 원래 게시물에 구문 오류가 있습니다. 그것은 다음과 같아야 :

(function() { 
    // your code goes here 
})(); 

을 이것은 일반적으로 더 정확한 용어 인 "자동 실행 기능"으로서 설명되지만 "즉시 호출 함수식." 우리는 그것을 "불확실한"것이라고 부를 수 있습니다. 이것은 종결의 한 유형입니다. 이것은 대단히 C와 같은 기존의 OOP 언어 클래스 ++ 또는 Java처럼

var myModule = (function() { 

    var my = {}; 

    var privateFoo = 'I am foo. I am a private field!'; 

    my.publicMethodGetFoo = function() { 
     return privateFoo; 
    } 

    return my; 
})(); 

:

이 패턴은 일반적으로 다음과 같습니다 모듈 패턴이라고 무언가로 확장된다. var 키워드를 사용하여 선언 된 속성은 모듈 외부에서 액세스 할 수 없습니다. JavaScript에는 액세스 수정 자와 같은 것이 없지만 이러한 속성은 모든 의도와 목적에 대해 '비공개'입니다.

우리는 'my'라는 개체를 만들었습니다. 이 객체는 모듈의 끝에서 반환됩니다. 즉, 모듈이 '외부 세계'에 노출되었음을 의미합니다. 따라서 모듈 외부에서 액세스 할 수 있습니다.따라서 'my'에 추가하는 필드 나 메소드는 공개됩니다.

+0

감사합니다. 구문 오류라고하지만 코드는 작동중인 솔루션에서 복사/붙여 넣기입니다. 귀하의 버전과 게시 된 버전의 차이점은 무엇입니까? – PostureOfLearning

+0

익명 함수는 대개 괄호 쌍으로 묶여 있으므로 JavaScript는 대입 연산자와 달리 표현식으로 계산합니다. (function() {}) 다음에 괄호 쌍이 나오고 즉시 표현식이 호출됩니다. 귀하의 예제에서 닫는 괄호는() 뒤에옵니다. 그것은 당신이 그것을 가지고있는 방식으로 잘 작동하는 것이 가능합니다. 진실을 말하면서 나는 모른다. 하지만 필자가 작성한 방식이 일반적으로 사용되는 구문이라는 것을 알고 있습니다. –

+0

감사합니다. 게시물 수정에 대한 의견도 보내주십시오. – PostureOfLearning