我最近正在用js开发某个项目,并且遇到了这样的情况:如果我可以访问传递给函数之一的参数并将其用作键,则我的代码可以减少大约50%。我是JS的新手,因此很少的解释会有所帮助。
我在寻找什么
Foo(arg1,arg2){console.log(Map[arg1]);
我想将arg1作为键而不是agr1的值。
他们有办法吗
答案 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");