2014-03-28 46 views
1

我在網上搜索瞭解這個詞。我明白'頭等功能'是可以分配給變量和「傳遞」的函數。但我實際上並不明白這意味着什麼。頭等功能究竟是什麼?

那麼這是什麼意思?什麼是頭等功能?

歡迎舉例。

+0

@SteveBenett我看着你問這個問題之前,這裏鏈接什麼,老老實實聽不太懂。它說Java只有一類功能。如果是這樣,比Java中的是什麼:'a = someFunction()'。我不明白。 –

+0

OK,[this](http://stackoverflow.com/questions/1073358/function-pointers-in-java)將解釋Java中的函數指針/第一類函數是什麼。如果你不知道函數指針通常是什麼,這裏是非常好的[博客文章](http://www.joelonsoftware.com/items/2006/08/01.html),它解釋了這一點。這應該對此有所瞭解。 –

+0

@SteveBenett謝謝,我會檢查這個 –

回答

1

第一類函數基本上意味着函數作爲就像一個字符串,一個陣列或數的數據類型。所以在Javascript中,函數是數據。

你應該看看:

What is a first class citizen function?

,因此您可以將函數作爲另一個函數的參數:

function map(array,fun){ 
    var result = []; 
    for(var i=0;i<array.length;i++){ 
     result.push(fun(array[i])); 
    } 
    return result; 
} 

map([1,2,3],function(a){return a+1;}); //yields [2,3,4] 

在這裏,我們有一個迭代數組和返回功能應用程序的結果(作爲參數傳遞)在數組的每個元素上。所以應用程序的樂趣是一個變量,因此數據。

如果與Java比較,你不能在java中編寫類(最多7個),因此函數不是java中的第一類< = 7,與整數或浮點數或類自身不同。 Java(< = 7)只有類的方法,而不是函數。