如何通過避免在JavaScript中重複這樣的函數創建來編寫這段代碼更多的功能?爲了給出一個上下文,我試圖找到是否已經實現了從當前值到最終值的移動。如果移動趨向於較高的值,則deltaValue
爲正,如果朝向較低的值則爲負。避免重複使用JS中的高階函數?
if (deltaValue > 0) {
maxPossibleValue = function(current, final) {
return current > final ? final : current;
}
} else {
maxPossibleValue = function(current, final) {
return current < final ? final : current;
}
}
假設存在着<
和>
的功能,在JavaScript lt
和gt
,我可能只是一個單一的功能,其中predicate
是lt
和gt
處理高階函數評估了此。但是,JS本身沒有這樣的函數,上面的方法也是唯一的方法嗎?
maxPossibleValue = function(predicate) {
return function(c, f) {
return predicate(c, f) ? c : f }
}
這可以被認爲是模板化所需謂詞函數並返回一個新函數。我在Scheme中看到過這樣的模式。
你試圖做這樣的事情? maxPosibleValue(function(c,f){return c> f;})(c,f); – dlopez
這是否達到目標?儘管我可以用一個邏輯來翻轉變量並達到我想要的。 – Nishant
我寫過的內聯函數是您似乎需要的一種方法(當deltaValue大於0時)。顯然你可以每次改變函數的邏輯來獲得你想要的行爲。 – dlopez