2012-09-20 53 views
0
var a = function() { 
    function someSetup(){ 
    var setup = 'done'; 
    } 
    function actualWork() { 
    alert('Worky-worky'); 
    } 
    someSetup(); 
    return actualWork; 
}(); 

爲什麼上面的代碼並不會提醒Worky-worky?它顯示undefined.thank你爲什麼代碼不提醒Worky-worky?

回答

5

因爲你只返回函數,而不是調用它。

執行a();該代碼執行後,會調用匿名自執行函數返回的函數,即actualWork

0

您試圖返回一個沒有返回類型(actualWork())的函數。

它不執行alert(),因爲您沒有正確調用該函數。

actualWork()

return actualWork;真的返回一個變量,而是因爲你沒有指派任何事情你要回未定義該變量。

應該做的伎倆。

+3

「但是因爲你沒有分配任何東西給那個變量,所以你沒有定義回來。」 ---實際上沒有。我確定OP在控制檯中執行代碼 - 所以'undefined'與整個表達式'var a = ...'有關,它不返回任何內容,'undefined'。 PS:確切地說:「實際上是返回一個變量」 - 它實際上是返回一個參考。你不能「返回一個變量」,但你可以返回一個值。 – zerkms

相關問題