【问题标题】:Javascript function parameter names at time of call?调用时的Javascript函数参数名称?
【发布时间】:2009-12-10 09:51:03
【问题描述】:

我知道这是一个真的长镜头,但我想我会问:有没有办法找到在函数调用中作为参数传递的变量的名称?

假设我有:

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

var a;
var b;

test(a, b);

我想要一个这样的数组:[a, b]。字符串也可以接受:["a", "b"]

我确实想要["tmp1", "tmp2"],我知道我可以通过解析函数的字符串表示得到它。

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

谢谢!

【问题讨论】:

  • 为什么这个问题被标记为 scala?
  • 我已经删除了 scala 和 case-class 标签。要么解释为什么它与他们有关,要么放弃他们。
  • 因为我的 caseclass.js 库试图模仿 Scala 的案例类。这个问题特别是因为我正在尝试在匹配中实现提取器。

标签: javascript pass-by-reference extraction


【解决方案1】:

也许您可以查看由异常或错误引起的堆栈跟踪,但我不确定它是否会起作用,而且它在不同的浏览器中可能会有所不同。

【讨论】:

    【解决方案2】:

    也许您想看看eval() 函数...但我从来没有做过像您用javascript 描述的那样。我什至不确定这是否可能。

    【讨论】:

    • 我试图避免 eval,尽管你说得对,它可能是唯一可能的方法。如果是这样,我想我会避免它——那太老套了!
    【解决方案3】:

    做这样的事情怎么样:

    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 ];
    }
    

    【讨论】:

    • 这行得通,但需要用户指定变量名,这是我希望避免的。我可能不得不这样做......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多