gpt4 book ai didi

Javascript:从变量本身引用变量名

转载 作者:行者123 更新时间:2023-12-02 23:10:17 27 4
gpt4 key购买 nike

我想创建一个快速函数来 console.log 变量名称和值。我希望函数的结果显示在控制台中:foo: bar

我对该功能的基本想法如下:

function varlog(var_name)
{
console.log(var_name + ": " + eval(var_name));
}

我会这样称呼:

function someRandomFunction()
{
var foo = "bar";
// ... some stuff happens
varlog("foo");
}

如果 foo 是全局的,则此方法有效,但在提供的示例中不起作用。另一个仅在全局范围内有效的选项是使用 window[var_name] 而不是可怕的 eval

我认为我的要求是不可能的,但我想我会把它扔在那里。

我花了很多时间试图偷懒。我当前的方法只是 console.log('foo: ' + bar); ,效果很好。但现在我只想知道这是否可能。

我在搜索这个/创建我现在拥有的内容时提到的一些其他问题:

--

编辑:如果可以从变量派生名称“foo”,我希望只调用 varlog(foo)

最佳答案

解决方案 - (针对您的实际用例) - console.log({foo})

ES6 中,IdentifierReference 被接受为 ObjectLiteral 上的 PropertyDefinition。的 PropertyDefinitionList (see compatibility chart):

变量name被设置为对象Propertykey
并且变量value被设置为ObjectPropertyvalue.

正如 console.log 显示 Object 及其 Propertiy/ies' keyvalue 您可以通过调用 console.log 使用它们来查看变量的名称 ({foo})

Note that when you initialize a single anonymous object with several variables as I did in the second console.log while they appear in the same order as initialized here in the snippet's output they might get reordered (alphabetically) elsewhere.

var testint = 3
var teststring = "hi"
var testarr = ["one", 2, (function three(){})]
var testobj = {4:"four", 5:"five", nested:{6:"six",7:"seven"}}
console.log({testint})
console.log({testint, teststring, testarr, testobj})

回答 - (针对问题标题) - Object.keys({foo})[0]

您还可以将这个简写Object InitializerObject.keys()一起使用来直接访问变量名称:

var name = "value"
console.log(Object.keys({name})[0])

关于Javascript:从变量本身引用变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5395370/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com