2013-12-08 72 views
1
function say667() { 
    // Local variable that ends up within closure 
    var num = 666; 
    var sayAlert = function() { alert(num); } 
    num++; 
    return sayAlert; 
} 

say667(); 

有什麼不對?我在jsfiddle中試過這段代碼,不會彈出提醒。函數在我的情況下執行失敗

+0

你可以給jsfiddle鏈接嗎? – HackerGK

+0

如果你只是想檢查結果,你可以寫alert(num)。請更清楚地告訴我們 – Vivekh

+1

從函數返回函數似乎沒有任何好理由嗎? – adeneo

回答

7

您只需返回功能參考。你需要使用()調用它,如果你想要執行:

say667()(); 

Live test case

+0

這很醜陋...但它的工作原理。奇怪的。 :) – Charlie74

+0

@ Charlie74是的,有時候JS有它的醜陋的一面有指針和引用。 :) –

+0

我現在明白了。我很喜歡這個http://jsfiddle.net/LTHP9/1/ thx! – user3057928

相關問題