Javascript 以布尔为参数的高阶函数

Javascript 以布尔为参数的高阶函数,javascript,boolean,higher-order-functions,Javascript,Boolean,Higher Order Functions,我一直在读一本关于JavaScript的书,即雄辩的JavaScript,我遇到了以下函数。我不明白它到底是怎么工作的 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(Bool

我一直在读一本关于JavaScript的书,即雄辩的JavaScript,我遇到了以下函数。我不明白它到底是怎么工作的

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

什么样的参数是布尔型的,将两个参数一个接一个地传递会产生什么效果。如果有人能解释这是如何工作的,我将不胜感激?提前感谢。

Boolean
是一个javascript基本类型构造函数

noised(Boolean)
将返回以下函数

function(arg) {
    console.log("calling with", arg);
    var val = Boolean(arg); // <- see the Boolean here
    console.log("called with", arg, "- got", val);
    return val;
}
函数(arg){
log(“调用”,arg);

var val=Boolean(arg);//
Boolean
是一个javascript基本类型构造函数

noised(Boolean)
将返回以下函数

function(arg) {
    console.log("calling with", arg);
    var val = Boolean(arg); // <- see the Boolean here
    console.log("called with", arg, "- got", val);
    return val;
}
函数(arg){
log(“调用”,arg);

var val=Boolean(arg);//要解决我认为您的问题:

  • Boolean
    是一个函数-它是布尔原语对象包装类型的标准构造函数
  • noised()
    是一个函数,它以一个函数作为参数并返回另一个函数
  • …因此,调用
    noise(Boolean)
    将生成一个函数,因此可以使用另一个括号内的参数列表调用该函数
所以


调用
Noised()
函数,然后调用返回的函数。返回的函数记录消息(我想这就是为什么它被称为“Noised”)并显示最初传递的函数(
布尔值
)的功能。

要解决我认为您的问题:

  • Boolean
    是一个函数-它是布尔原语对象包装类型的标准构造函数
  • noised()
    是一个函数,它以一个函数作为参数并返回另一个函数
  • …因此,调用
    noise(Boolean)
    将生成一个函数,因此可以使用另一个括号内的参数列表调用该函数
所以


调用
noised()
函数,然后调用返回的函数。返回的函数记录消息(我想这就是为什么它被称为“noised”)并显示最初传递的函数(
Boolean
)的功能。

Boolean是一个内置函数/构造函数,请参阅

f(x)(y)
的意思是:调用
f
,传递
x
作为参数。然后将返回值(必须是另一个函数)作为参数调用,传递
y
作为参数。其工作原理类似于
var tmp=f(x);tmp(y);

嘈杂(布尔)
返回

function(arg) {
    console.log("calling with", arg);
    var val = f(arg);
    console.log("called with", arg, "- got", val);
    return val;
};
其中
f
绑定到
Boolean

然后使用
0
调用该函数将执行

console.log("calling with", arg);
var val = f(arg);
console.log("called with", arg, "- got", val);
return val;
其中
f=Boolean
arg=0
,即

console.log("calling with", 0);
var val = Boolean(0);
console.log("called with", 0, "- got", val);
return val;

Boolean是内置函数/构造函数,请参阅

f(x)(y)
的意思是:调用
f
,传递
x
作为参数。然后将返回值(必须是另一个函数)作为参数调用,传递
y
作为参数。其工作原理类似于
var tmp=f(x);tmp(y);

嘈杂(布尔)
返回

function(arg) {
    console.log("calling with", arg);
    var val = f(arg);
    console.log("called with", arg, "- got", val);
    return val;
};
其中
f
绑定到
Boolean

然后使用
0
调用该函数将执行

console.log("calling with", arg);
var val = f(arg);
console.log("called with", arg, "- got", val);
return val;
其中
f=Boolean
arg=0
,即

console.log("calling with", 0);
var val = Boolean(0);
console.log("called with", 0, "- got", val);
return val;

谢谢…这很容易想象!谢谢…这很容易想象!