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

时间:2017-12-30 07:59:18

标签: javascript function calling-convention

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

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



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




谢谢!

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

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

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



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

}


mainFunc('Checkbox1')




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

1 个答案:

答案 0 :(得分: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']();
&#13;
&#13;
&#13;