请解释一下这个高阶函数 javascript 代码

Please explain me this higher-order function javascript code

我正在学习 Eloquent JavaScript 书后的高阶函数。 我一直无法理解这段代码,为什么 "Boolean" 作为嘈杂的第一个参数传递?

这应该是改变其他功能的功能,我只是不明白它是如何工作的!

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 是 Boolean 类型的构造函数。它可以是任何函数。

noisy 接受任何单参数函数作为其参数。它 returns 调用该函数的新函数,但在调用它之前和之后显示消息。

Boolean 只是他们使用的示例函数。它将其参数转换为布尔数据类型。