假设你有
var funct=function(a,b){
return a+b;
};
console.log(funct);
有没有办法可以从funct中获取参数(a和b)的名称?如果你在函数中,你有权访问它们吗?我知道“arguments”会给你一个类似数组的对象,但有没有什么可以给你一个类似于map或类似对象的参数表示,这样你就可以在声明函数时得到它们的名字?
答案 0 :(得分:5)
不,你不能这样做。没有办法将变量名称作为字符串。
如果你真的需要这个,我建议不要传递多个参数,而是传递一个对象。
var funct=function(args){
var argsNames = Object.keys(args); // Get the keys of the args object
console.log(argsNames); // ['a','b']
return args.a + args.b;
};
然后这样称呼它:
funct({
a: 12,
b: 2
});
答案 1 :(得分:2)
一种方法是将函数转换为字符串并将其解析
var funct=function(a,b){
return a+b;
};
var re = /\(([^)]*)/;
var daArgs = funct.toString().match(re)[1].split(/,\s?/);
console.log(daArgs);
仍然不知道你为什么需要它。