2014-01-09 196 views
5

可能有人請解釋以下片段之間的區別..JavaScript函數的返回值

var a = function(){ 
     return function(){ 
        //some code 
         } 
        }(); 

var a = function(){ 
        //some code 
        } 

我明白我們使用復位功能來訪問父函數定義的變量,這是一個自我執行的函數,但在第一種情況下,第一個函數只會返回其他函數。我曾多次看到過這種類型的功能,但無法弄清楚它的功能。還請解釋上述功能

var session = (function(){return ${session}})(); 

var session = ${session}; 
+4

由於在函數中沒有聲明局部變量,所以沒有實際區別。 – Quentin

+0

@Quentin:這就是我想知道的..謝謝.. – user1776573

回答

1

我95%相信這裏的官方答案應該是,至少在OP的兩個例子中,使用IIFE是多餘的。在這兩個例子中,未包裝的版本更好,更清晰。

另一種未被提及的可能性是代碼示例可能來自編譯爲JavaScript的多種語言之一,如咖啡標記。這可能是因爲使用IIFE進行封裝對於編譯器來說是一個很好的總體策略,但它有時會導致多餘的代碼,比如OP的例子。

0

您需要閱讀兩件事情ClosuresFunction and function scope

+0

@Jonah給出了另一個想法,並更新了答案,也就是在你認爲正確的問題中代碼。我用通用的方式回答了這個問題。謝謝。 –

+0

之前的評論在您修改後被刪除。謝謝。 – Jonah