2014-02-23 134 views
1

如何在Javascript中調用此函數? ,因爲它需要ň作爲其外部函數的參數,它也需要另一個參數裏面它的功能,但如何稱呼呢?如何在Javascript中調用此函數?

function foo(n) { 
    return function (i) { 
      return n += i } } 
+0

它確實返回的功能。稱之爲。 – Bergi

回答

6

調用該函數的返回值:

foo(1)(2); 
3

這是一個返回函數的函數。通常你想提述該功能,這樣

foofn = foo(7); 
result = foofn(7); 

你也可以只調用該函數馬上

result = (foo(7))(7); 

函數可以做什麼?那麼這不是你的問題......

5

它是一個經典的closure例如:它確實返回一個函數,該函數可以訪問n變量。

var counter = foo(0); 
counter(1); // 1 
counter(2); // 3 
counter(5); // 8 
+0

酷!我不明白它是如何「保存記憶」,雖然內在價值的...... – Numbers

+0

它「保留」這是在'FOO創建的'N'變量()'調用 – Bergi

1

這是我們平時使用JavaScript閉包的方式,第一個函數創建一個範圍,以保持n變量安全的內部功能使用:

var n = 11; 
var myfunc = foo(n); 

現在你可以打電話給你myfunc功能,用一個簡單的i的說法,而它使用n沒有你需要直接傳遞到您的函數:

myfunc(10); 

所以如果你想叫它,它一旦建立,你可以這樣做:foo(11)(10);

但是在這些情況下,我們通常不叫他們這樣,他們通常應該被用作回調或像這樣的東西。