Javascript 函数能否知道作为参数的变量的名称?

Javascript 函数能否知道作为参数的变量的名称?,javascript,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:

可能重复:

调试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
这将导致控制台中出现如下行:

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
这很难理解。我想要这样的输出:

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'});

请注意,大多数积垢是由于您希望在一行上记录参数造成的;在其他一些情况下(例如每行记录一个),您只需在每个字符串上调用console.log,而不用担心数组或字符串联接。

不过,我不确定使用位置参数做您想做的事情有多容易。抱歉:-(@Matt:我是说函数声明为:
函数doSomething(a,b,c)
;似乎无法获取这些变量的名称,因为它们实际上是位置参数。如果您想要关键字参数,则需要一个对象;在这种情况下,您的对象和我的对象在我的函数中都能同样好地工作。@PlatinumAzure谢谢您的回答。我想这是我们能够管理的最好的解决方案。没有问题但这并不理想——我问这个问题的主要动机是让函数为某些变量集快速编写可读的诊断,而不必编写
console.log(“用户名:+usr+”,名字:+frstName)
或类似功能。拥有一个接受对象的函数只会有一点帮助。许多调试器会给您带来比在该位置设置制动点更强大的功能。我更喜欢使用它们,而不是在console.log下乱扔代码