2015-01-31 1 views
1

우리는 두 가지 방법으로 즉시 함수를 호출 할 수 있습니다. 나는 다음과 같은자체 실행 기능과 IIFE 간의 차이

var foo = function(){ 
    return { }; 
}(); 

이의 차이점이 무엇인지에 대한 혼란 스러워요 :

var foo = (function(){ 
    return { }; 
}()); 

답변

2

정확히 같은.

// This one creates a function expression, then executes that function expression. 
var foo = function(){ 
    return { }; 
}(); 

// This one creates a function expression, inside of a set of parens. 
// the parens hold an expression. 
var foo = (function(){ 
    return { }; 
}()); 

괄호는 두 가지 이유로 사용됩니다

1) 이러한 맥락에서, 그들은 당신이 인생을 가지고 아닌 컴파일러, 독자에게 단서입니다.

2) 다른 문맥에서는 함수 문장을 생성 할 수있을 때 parens가 표현식을 강제합니다.

// The parens here force an expression, which means it forces a function expression 
// instead of a function statement. 
(function() {....}) 
+0

덕분에 ... 지금 내 생각은 분명합니다. :) –