调用时的Javascript函数参数名称?

调用时的Javascript函数参数名称?,javascript,pass-by-reference,extraction,Javascript,Pass By Reference,Extraction,我知道这是一个非常遥远的目标,但我想我会问:有没有办法找到在函数调用中作为参数传递的变量的名称 假设我有: function test(tmp1, tmp2) { // ... } var a; var b; test(a, b); 我想得到这样一个数组:[a,b]。字符串也是可以接受的:[“a”,“b”] 我不想要[“tmp1”,“tmp2”],我知道我可以通过解析函数的字符串表示来获得它 我这样问是因为我正试图用真正的提取器来改进我的库(更多信息请参见链接)。我知道只有对象是通过引

我知道这是一个非常遥远的目标,但我想我会问:有没有办法找到在函数调用中作为参数传递的变量的名称

假设我有:

function test(tmp1, tmp2) {
  // ...
}

var a;
var b;

test(a, b);
我想得到这样一个数组:
[a,b]
。字符串也是可以接受的:
[“a”,“b”]

我不想要
[“tmp1”,“tmp2”]
,我知道我可以通过解析函数的字符串表示来获得它

我这样问是因为我正试图用真正的提取器来改进我的库(更多信息请参见链接)。我知道只有对象是通过引用传递的,所以我试图找到一种解决方法,将提取的值传递回占位符变量


谢谢

也许您想看看函数。。。但我从来没有用javascript做过你描述的事情。我甚至不确定这是否可能。

也许您可以查看由异常或错误引起的stacktrace,但我不确定它是否会工作,并且在不同的浏览器中可能会工作得不同。

这样做怎么样:

var a = { name: 'a', value: 'foo' };
var b = { name: 'b', value: 'bar' };

test(a, b);

function test(tmp1, tmp2)
{
   var paramArray = [ tmp1.name, tmp1.name ];
}

我试图避免评估,尽管你是对的,这可能是唯一可能的方法。如果是这样的话,我想我会避免它——那太粗鲁了!为什么这个问题被标记为scala?我已经删除了scala和case类标记。要么解释为什么要使用它们,要么放弃它们。因为我的caseclass.js库试图模仿Scala的case类。这个问题特别是因为我试图在匹配中实现提取器。这是可行的,但需要用户指定变量名,这是我希望避免的。我可能不得不这么做。。。