是否可以使用从另一个函数传递的参数来命名函数?

问题描述 投票:0回答:1

我是Javascript的新手,所以我不知道它的功能。任何帮助将非常感激!

正如标题所示,我试图从函数中传递一个参数来命名其中的另一个函数。下面的方法由于显而易见的原因不起作用,但我认为它传达了我正在尝试做的事情。函数名称需要对我正在处理的项目非常具体。

function mainFunc(param1) {
  function param1() {}
}

谢谢!

编辑:我们将开始使用的软件在我的工作中无纸化使用javascript脚本引擎。为了让我做一些简单的事情,比如:

如果选中A部分中的至少一个复选框,则必须至少检查B部分中的一个复选框。

由于软件的工作方式,我必须为表单上的每个复选框字段编写一个函数,函数名必须特定于我们通过GUI分配给复选框的名称。我希望编写一个函数来编写具有特定名称的另一个函数,并调用所述函数。

function mainFunc(funcName) {
  function 'funcName'() {
    //do stuff;
    }
    
  'funcName'()

}


mainFunc('Checkbox1')

也许这将有助于澄清我正在尝试做的事情。很抱歉第一次不清楚。

javascript function calling-convention
1个回答
0
投票

您有很多选择来解决您的问题

一个选项是返回一个对象,其中的函数使用传递给mainFun的参数命名,请看下面的示例

function mainFunc(param1,param2) {
    return {
        [param1]:function () {
            console.log(" I am  function from " + param1)
        },
        [param2] : function () {
            console.log("I am function from " + param2) ;
    }
    }
}
let hello  = 'hello' ;
let greet = 'anything' ;
let functions = mainFunc(hello,greet);
functions['hello']();
functions['anything']();
functions[hello]();
functions[greet]();

如果mainFun有很多参数,你也可以使用参数对象解决它,如下例所示

function mainFun(par1) {
    let myObj = {};
    for(let i = 0 ; i<arguments.length;i++){
        console.log(arguments[i]);
        myObj[arguments[i]] = ()=> {
            console.log('You call me from ' + arguments[i]);
        }
    }
    return myObj ;
}
let functions  = mainFun('a','b','c','d');
functions['a']();
functions['b']();
functions['c']();
functions['d']();
© www.soinside.com 2019 - 2024. All rights reserved.