2012-05-02 5 views
2

가능한 중복 :
Location of parenthesis for auto-executing anonymous JavaScript functions?
Is there a difference between (function() {…}()); and (function() {…})();?
Two ways of immediate call to anonymous function (function(d){ }()); and (function(x){ })();자바 스크립트 익명 함수 - 정의

선언하고 익명 함수를 호출 주어진 두 가지 방법 사이에 차이가 있습니까?

옵션 1 :

(function(){ 
    console.log('Declare and call anonymous function'); 
})(); 

옵션 2 : 그것은 내가 그 차이를 이해할 수 없었다 evaluated.But되면

(function(){ 
    console.log('Declare and call anonymous function'); 
}()); 

두 함수가 호출된다.

+0

옵션 1은 함수를 호출하기 전에 정의되고 사용할 수 있음을 보증합니다. 아마 그것은 호환성을 위해 그렇게 행해진 다 (브라우저는 까다로운 함수 정의 상황에서 아주 다르게 행동 할 수있다). – Brendan

+0

옵션 3 :! function() {console.log ('익명 함수 선언 및 호출'); }() – GillesC

+0

내 대답을 참조하십시오 http://stackoverflow.com/a/3783287/5445 실용적인 차이가 * 문법 * 수준에서만 차이가 있습니다. – CMS

답변

1

아니요, 차이점은 없습니다. 두 옵션은 구문 상으로 다르지만 의미 상 동일합니다.

(foo()) 

그들은 같은 일이야 어떻게 아마도 그것은 명확입니다 : 명명 된 기능을 고려하십시오.

+0

차이가있을 수 있습니다 :'new (foo)()'가'new (foo())'와 같지 않습니다. –

+0

아, 새'우선 순위 때문에 첫 번째 예제는'(new (foo))()'에 해당합니까? 좋은 지적이지만이 질문을 삭제하도록 설정되어 있으므로 내 대답에 추가할만한 가치가 있다고 생각하지 않습니다. – jimw