函数能知道它作为参数使用的变量的名称吗

Can a function know the names of the variables it takes as arguments?

本文关键字:变量 参数 函数      更新时间:2023-09-26

可能重复:
检查JavaScript函数的定义/执行中参数的名称/值

调试javascript时,我经常有这样的代码:

function doSomething(a,b,c) {
    console.log(a,b,c);
    //function contents here
    //...
}

这导致控制台中出现如下行:

0.0010719847172334315 0.002392010391772366 -2.764548758273147e-7

这很难读懂。我想要这样的输出:

a: 0.0010719847172334315, b: 0.002392010391772366, c: -2.764548758273147e-7

这样做可能吗?我认为用多种语言是不可能的。然而,我对javascript不是很了解,而且它似乎是一种可以做这样聪明事情的语言。

您可以通过接收参数对象并对其进行迭代来完成类似的操作:

function doSomething(options) {
    var i, parameterString = [];
    for (i in options) {
        if (!options.hasOwnProperty(i)) continue;
        parameterString.push(i + ': ' + options[i]);
    }
    console.log(parameterString.join(', '));
    //function contents here
    //...
}
// Invoke like this:
var result = doSomething({a: 'a', b: 'b', c: 'c'});

请注意,大多数cruft是由于您希望在一行中记录参数;在其他一些情况下(例如每行记录一个(,您可以简单地对每个单独的字符串调用console.log,而不必处理数组或字符串联接。