如何将未命名的函数转换为已命名的函数?

时间:2020-09-08 23:51:27

标签: javascript node.js

我做了下面的功能。我相信,基本上,如果一个播放器键入/ port,而另一个播放器的名称则该函数返回true。

    mp.players.forEach(_player => {
        if(_player.name === name)
            return true;
    });

我想为上面的函数命名,所以我可以做类似的事情:

if (functionName) [code]

那么,如何命名上面的函数?还是有其他方法可以检查它是否正确。我正在尝试在下面的try ... catch语句中列出它:

try {
        if (player.adminLevel < 8)  throw "Error 1";
        if (!targetPlayer) throw "Error 2";
        if (player.adminLevel <= targetAdminLevel) throw "Error 3";
        //AND THE NEW ONE HERE
        if (functionName) throw "Error 4";
    }

2 个答案:

答案 0 :(得分:2)

只需将其编写为普通函数,然后传递函数名称而不是lambda表达式即可。

function myFunction(player) {
    if(_player.name === name)
        return true;
}


mp.players.forEach(myFunction);

现在,您可以在myFunction的其他地方使用它的名称了……不需要“转换”。

答案 1 :(得分:0)

您尚未创建任何功能。 forEach 是您要为数组调用的Array原型的命名函数。您可以在try块中直接编写 forEach 逻辑,或者声明一个命名函数并按如下所示使用它:

    function functionName(players, name){
            return players.some(_player => _player.name === name);
        };


    try {
           if (player.adminLevel < 8)  throw "Error 1";
           if (!targetPlayer) throw "Error 2";
           if (player.adminLevel <= targetAdminLevel) throw "Error 3";
           //AND THE NEW ONE HERE
           if (functionName(mp.players, player.name)) throw "Error 4";
     }
相关问题