2016-01-04 53 views
-1

爲什麼不同的結果直接調用函數而不是函數表達式然後調用變量?函數表達式與直接調用

function makeFunc() { 
    var name = "Mozilla"; 
    function displayName() { 
    alert(name); 
    } 
    return displayName; 
} 

console.log(makeFunc()); 
makeFunc(); //no alert 

var myFunc = makeFunc(); 
console.log(myFunc); 
myFunc(); //Yes alert 
+0

因爲第一個永遠不會調用'displayName',而第二個呢(間接)。 –

+2

這是關閉。如果你不存儲返回的值,這是一個函數,不要調用返回的函數,那麼代碼就沒有意義了。 – undefined

+0

http://stackoverflow.com/questions/12380382/javascript-assign-variable-to-alert – AshBringer

回答

2

你要調用函數的返回

function makeFunc() { 
 
    var name = "Mozilla"; 
 
    function displayName() { 
 
     alert(name); 
 
    } 
 
    return displayName; 
 
} 
 
makeFunc()(); // alert!