2013-03-31 48 views
1

JavaScript的書「雄辯的javascript」JavaScript中的高階函數是什麼意思?

function negate(func) { 
return function(x) { 
return !func(x); 
}; 
} 
var isNotNaN = negate(isNaN); 
show(isNotNaN(NaN)); 

有人解釋和問題的標題說的是高階函數,這是什麼代碼呢?

+0

閱讀http://stackoverflow.com/questions/13212940/higher-order-functions-javascript – Ejaz

+0

是你的問題高階函數是什麼或這個特定功能在做什麼?我認爲函數名和下面的應用程序已經解釋了它在做什麼,不是嗎?更高階的函數是什麼,在維基百科上進行了解釋:https://en.wikipedia.org/wiki/Higher_order_function。 –

+0

我不明白這個功能可以解釋嗎? – raziq

回答

1

當大多數人認爲的功能,他們接受的對象或值作爲參數,同樣返回一個對象或值,如function addTwoNumbers(int x, int y)

在數學和計算機科學中,「高階函數」就像任何其他的功能,不同的是,除了是值的參數,也可以接受一個函數作爲參數。

...這是所有高階功能,真的:)

在您發佈的例子,negate是一個高階函數,因爲它有一個參數func這是一個函數(或者更確切地說,分配給一個功能)。

negate更進一步:它不僅僅調用func並取消其結果,而是返回一個匿名函數(即位於內部的return function(x)位)。

所以isNotNaN變量然後具有較早匿名功能的類型(和價值)。

+0

尼斯解釋。 – Paul

+0

這是從哪裏來的 – raziq

+0

@raziq:這是一個內置函數。 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/isNaN –

0

高階函數是一個函數,它:

  • 採取一個或多個功能作爲輸入。
  • 給另一個功能輸出。

什麼是你的代碼嗎?它否定了函數isNan(toNotNan)。它接受一個函數(isNan),然後輸出否定(isNotNan)。就這麼簡單。

+0

函數不返回參數的否定;它返回一個返回參數否定的函數。 – Dai

+0

這就是我想說的。它返回isNotNan函數。 – aIKid

相關問題