javascript - Eloquent JavaScript : Higher Order Functions

标签 javascript higher-order-functions

我正在阅读下面的 Eloquent Javascript:高阶函数示例,并且已经阅读了问题和解答 herehere 。但我还是很困惑。

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
  1. 既然noisy()只接受一个参数,即( bool 值),那么如何将(0)传递给noisy(f)呢?我可以看到内部函数 f(arg) 基本上是 Boolean(0),但我不明白如何将两个参数传递到只允许一个参数的函数中。会“吵闹( bool )(0)(1)(2)(3);”是一个有效的函数调用吗?如果是这样,您如何区分噪声函数中 bool 值后的每个值? “arg”将引用哪个值?

  2. 书中指出示例函数正在修改另一个函数。正在修改哪个功能?我不明白作者所说的“修改”是什么意思。

最佳答案

but I don't understand how two parameters can get passed into a function that only allow one parameter

noisy 返回一个函数,Boolean 被传递给 noisy0 被传递给从返回的匿名函数noisy,其中 fBooleanval 变为 Boolean(0)

例如

function fn1(arg1) {
  return function fn2(arg2) {
    console.log(arg1, arg2)
  }
}

// Call fn1, inside fn1 fn2 is called with `"b"` as parameter.
fn1("a")("b") // `a b`, `fn2` 

关于javascript - Eloquent JavaScript : Higher Order Functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38068055/

相关文章:

Python 函数自省(introspection) : what members of a class passed as argument are mentioned inside it?

python - 高阶函数 - 接收 lambda 函数进行导数计算

javascript - 如何在 javascript 中打印带有首选项的 html?

javascript - 输入搜索字段在响应式网站的移动版本上无法正常工作

javascript - 将 document.getElementById 设置为变量

javascript - 如何使用内联服务 worker

scala - 使用集合作为函数

javascript - 处理数据库事务返回

perl - 在 Perl 中,确定 coderef 包的最可靠方法是什么?

javascript高阶函数变量未定义