在Javascript中,如果你有一个函数,你可以通过名字得到参数吗?

时间:2012-06-14 16:01:24

标签: javascript

假设你有

var funct=function(a,b){
    return a+b;
};
console.log(funct);

有没有办法可以从funct中获取参数(a和b)的名称?如果你在函数中,你有权访问它们吗?我知道“arguments”会给你一个类似数组的对象,但有没有什么可以给你一个类似于map或类似对象的参数表示,这样你就可以在声明函数时得到它们的名字?

2 个答案:

答案 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);

jsFiddle

仍然不知道你为什么需要它。