在Javascript函数内获取变量外部名称? [重复]

问题描述 投票:0回答:1

我正在尝试研究一些以间距列出数据内对象(无论多深)的方法。

类似:

const data = [1,2,3];
test(data);
Output:
"[
  1,
  2,
  3
]"

到目前为止,我已经解决了获取对象变量名称等的所有技巧,因此得到了类似的东西:

const data = {a: 1, b: 2};
test(data);

Outputs:
"{
  a: 1,
  b: 2
}"

所以我可以递归地循环几乎任何东西,并且我还添加第二个参数以便能够搜索给定的键或变量。

所以这已经是有效的代码,但我缺少的是我想用赋予函数的对象名称开始打印,例如:

const data = "hello";
test(data);

Outputs:
"data: "hello""

const data = {a: 1, b: 2};
test(data);

Outputs:
"data: {
  a: 1,
  b: 2
}"

我尝试了 Object.keys 但无法访问函数外部的对象名称。

我已经看到你可以通过将给定变量分配为开始中的对象来做到这一点,例如: 测试({数据});

这样就生成了一个传递过来的对象,其中有数据键和数据值。

但我只是想知道如果没有的话这是否可以完成?

我只是想让我的编码伙伴尽可能简单,并且更喜欢按原样传递变量,而不添加任何额外的东西。

为了避免任何混淆,我想要的只是开始用变量名称(在本例中为data)编写输出,以“[变量名称]:”或如示例“data:”开头,无需尝试添加花括号。

javascript function variables
1个回答
1
投票

在原生 JavaScript 中,变量本身不能直接传递到函数中。相反,传递的是存储在变量中的值。

但是,您可以通过传递一个将变量作为属性保存的对象来使用解决方法。这样,您就可以访问函数内的键(变量名称)和值。

这是一个例子:

test({data})

function test(obj) {
  const key = Object.keys(obj)[0];
  const value = obj[key];
  console.log(`${key}: ${JSON.stringify(value)}`);
}
© www.soinside.com 2019 - 2024. All rights reserved.