簡體   English   中英

如何將未命名函數轉換為命名函數?

[英]How can I convert an unnamed function to a named one?

我做了下面的功能。 基本上,如果一個玩家輸入 /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";
    }

只需將其編寫為普通函數,然后傳遞函數名稱而不是 lambda 表達式。

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


mp.players.forEach(myFunction);

現在你可以在別處使用myFunction的名字......不需要“轉換”。

您尚未創建任何函數。 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";
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM