Javascript高阶函数:

Javascript高阶函数:,javascript,functional-programming,Javascript,Functional Programming,我现在正在学习HOF: 带有噪音的武器=[ {名称:“移相器”,噪音:“BSSSZSSSSS”,宇宙:“星际迷航”}, {名称:“爆炸机”,噪音:“皮尤皮尤”,宇宙:“星球大战”}, {名称:“声波螺丝刀”,噪音:“皮尤皮尤”,宇宙:“谁博士”}, {名称:“光剑”,噪音:“皮尤皮尤”,宇宙:“星球大战”}, {名称:“吵闹的蟋蟀”,噪音:“皮尤皮尤”,宇宙:“黑衣人”}, ]; 来自宇宙(宇宙)的功能武器{ const usablewearms=带有噪声的武器。过滤器( (w) =>w.un

我现在正在学习HOF:

带有噪音的武器=[
{名称:“移相器”,噪音:“BSSSZSSSSS”,宇宙:“星际迷航”},
{名称:“爆炸机”,噪音:“皮尤皮尤”,宇宙:“星球大战”},
{名称:“声波螺丝刀”,噪音:“皮尤皮尤”,宇宙:“谁博士”},
{名称:“光剑”,噪音:“皮尤皮尤”,宇宙:“星球大战”},
{名称:“吵闹的蟋蟀”,噪音:“皮尤皮尤”,宇宙:“黑衣人”},
];
来自宇宙(宇宙)的功能武器{
const usablewearms=带有噪声的武器。过滤器(
(w) =>w.universe==universe
);
const useWearm=(weaponName)=>{
常量武器=可用武器。查找((w)=>weaponName==w.name);
如果(武器){
log(`used${wearm.name}:${wearm.noise}`);
}否则{
log(${weaponName}不是${universe}universe的一部分);
}
};
返回使用武器;
}
//用法
const UseStarwarswapon=来自宇宙的武器(“星球大战”);
使用Starwarswapon(“爆炸机”);//控制台日志“用过的爆炸机:皮尤皮尤”

使用Starwarswapon(“吵闹的蟋蟀”);//控制台记录“嘈杂的蟋蟀不是星球大战宇宙的一部分”
武器从宇宙返回UseWearm,这是一个接收一个名为WearmonName的参数的函数

执行以下操作时:

 const useStarWarsWeapon = weaponsFromUniverse("Star Wars");
然后UseStarwarswapon是一个函数,它接收一个名为weaponName的参数

因此,您可以使用所需的任何参数调用该函数。例如,使用Blaster时,请执行以下操作:

useStarWarsWeapon("Blaster");

“为什么“爆炸机”可以自然地传递给来自宇宙的武器中的武器?”你可以称之为
来自宇宙的武器(“星球大战”)(“爆炸机”)
,但你不能直接传递这个论点。首先需要
weaponsFromUniverse(“星球大战”)的结果。
weaponsFromUniverse
返回一个函数。这可以被const
useStarwarswapon
Cool使用,感谢您指出useArmour是返回函数,我现在明白了。