Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用参数调用不同的函数?_Javascript_Node.js - Fatal编程技术网

Javascript 如何使用参数调用不同的函数?

Javascript 如何使用参数调用不同的函数?,javascript,node.js,Javascript,Node.js,我提出了以下基于参数值调用不同函数的解决方案。有更好/更简单的方法吗 function mainFunction(input, category) { categories = { 'category1': () => { return { /* return stuff */ }} 'category2': () => { return { /* return stuff */ }} } return categories[category].call(

我提出了以下基于参数值调用不同函数的解决方案。有更好/更简单的方法吗

function mainFunction(input, category) {
  categories = {
    'category1': () => { return { /* return stuff */ }}
    'category2': () => { return { /* return stuff */ }}
  }
  return categories[category].call();
}

谢谢大家!

您可以直接执行
类别[类别]()

但是,为了避免每次调用此函数时都定义categories对象,我会这样做:

const actions={
类别1:(a,b,c)=>{console.log(a,b,c)},
类别2:()=>{return{/*return stuff*/}},
呼叫:(类别,…参数)=>{
如果(!操作[类别]){
抛出新错误(“无效类别”)
}
返回操作[类别](…参数);
}
}

actions.call(“category1”,42,7,0)
您可以尝试类似的方法

函数main函数(输入,类别){
常量类别={
'类别1':()=>{
控制台日志(“1类”);
},
'类别2':()=>{
控制台日志(“1类”);
}
};
如果(类别[类别]){
退货类别[类别]();
}否则{
//在这里抛出错误
}
}

主功能(“测试”、“类别2”)
除了根据这些字符串值调用它们之外,还有什么原因导致
category1
category2
mainFunction
中?如果这些函数是在
main函数
之外定义的,那么在您的程序上下文中是否有意义?@PatrickRoberts它位于一个模块中,因此可以导出main函数。另外,为了避免单独传递每个函数的输入参数,我喜欢它。输入arg可以像
actions.call('category1','some input')
@Alan justice:-)那样处理,如果您想使用spread操作符,这将更为奇特。请参见编辑。