【发布时间】:2015-07-25 03:26:40
【问题描述】:
我正在阅读Eloquent JavaScript,当时我在第 5 章中遇到了这个问题。:
你可以拥有创建新函数的函数。
function greaterThan(n) { return function(m) { return m > n; }; } var greaterThan10 = greaterThan(10);你可以拥有改变其他功能的功能。
function noisy(f) { return function(arg) { console.log("calling with", arg); var val = f(arg); console.log("called with", arg, "- got", val); return val; }; } noisy(Boolean)(0); //->calling with 0 //->called with 0 - got false
我的问题是:
- 以上两个示例有何不同?
- noisy如何改变Boolean?
【问题讨论】:
-
我认为这只是措辞不当。我认为它试图说明的一点是,您可以通过将函数传递给另一个函数来使用回调。所涉及的“变化”实际上是它正在消耗回调的结果并对其进行修改。
-
“更改其他功能”似乎具有误导性,即使它试图“简化”操作概念;功能是一样的。最好将其表达为“并且您可以拥有使用(通过包装)其他功能的功能..”
标签: javascript higher-order-functions