访问传递的参数变量并将其作为映射键传递

时间:2018-10-03 08:27:18

标签: javascript

我最近正在用js开发某个项目,并且遇到了这样的情况:如果我可以访问传递给函数之一的参数并将其用作键,则我的代码可以减少大约50%。我是JS的新手,因此很少的解释会有所帮助。

我在寻找什么

Foo(arg1,arg2){console.log(Map[arg1]);
  

我想将arg1作为键而不是agr1的值。

他们有办法吗

1 个答案:

答案 0 :(得分:1)

如果需要变量名,可以尝试如下操作:

function foo(arg1, arg2, Arg3){
  var Args = Array.apply(null, arguments);debugger
  var ArgNames = (foo+"").match(/\(([.\s\S]*?)\)/)[1].replace(/[\s ]/g,"");
  ArgNames = !ArgNames ? [] : ArgNames.split(",");
  for(var i in ArgNames) console.log(ArgNames[i]+": "+Args[i]);
  console.log("Value of arguments: "+Args);
  console.log("Name Of arguments: "+ArgNames);
};
foo(100,40,"BTTOLA");


即使该函数没有任何参数,或者即使在几行中定义,这种方法也可以正常工作。

以下功能受此方式支持:

function foo(a, b){...};

function foo(
   a, 
   b
 ){
   ...
};

var foo=function(a, b){...};

或者如果foo是这样的Arrow函数:

var foo = (a, b) => {...}

您可以尝试类似的操作(对Arrow和简单功能都适用):

var foo = (arg1, arg2, Arg3) => {
  var ArgNames = (foo+"").match(/\(([.\s\S]*?)\)/)[1].replace(/[\s ]/g,"");
  ArgNames=ArgNames?ArgNames.split(","):[];
  console.log(ArgNames);
};
foo(100,40,"BTTOLA");