获取输入变量的名称(如 Function.name)

get name of input variable (like Function.name)

我有一个 Function,我想在其中检索用于调用该函数的变量的名称。我该怎么做?

let fooVar = 3;
let barVar = "hello World";

function doStuff(variable) {
    let varName = ???; // retrieve name of variable
    return varName + ": " + variable;
}

document.write(doStuff(fooVar)); // should output "fooVar: 3"
document.write(doStuff(barVar)); // should output "barVar: hello World"

如果 variableFunction,我可以使用 variable.name

我知道 this,但它只会 return "variable",而不是放入函数中的变量的名称。


作为替代方案:有没有一种方法可以在声明变量时自动调用某个函数?如果可能的话,我会使用上面 link 中给出的方法将变量名添加到映射中,然后在函数内部使用该映射来检索变量名。

这实际上是不可能的,作为解决方法,您可以这样做

let fooVar = { name: 'fooVar', value: 3 };
let barVar = { name: 'barVar', value: 'Hello World' };

function doStuff({ name, value }) {
    let varName = name; // retrieve name of variable
    return varName + ": " + value;
}

console.log(doStuff(fooVar)); // should output "fooVar: 3"
console.log(doStuff(barVar));

或者你也可以

let fooVar = 3;
let barVar = 'Hello World';

function doStuff(variable) {
    const arr = Object.entries(variable)[0];
    const [name, value] = arr;
    let varName = name; // retrieve name of variable
    return varName + ": " + value;
}

console.log(doStuff({ fooVar })); // should output "fooVar: 3"
console.log(doStuff({ barVar }));