打印/显示 JavaScript 变量的名称而不是它的值

Posted

技术标签:

【中文标题】打印/显示 JavaScript 变量的名称而不是它的值【英文标题】:Print / display a JavaScript variable's name instead of it's value 【发布时间】:2014-04-28 05:42:01 【问题描述】:

是否可以打印/显示 javascript 变量的名称?例如:

var foo=5;
var bar=6;
var foobar=foo+bar;

document.write(foo+ "<br>");
document.write(bar+ "<br>");
document.write(foobar + "<br>");

我们将如何打印变量的名称以便输出如下:

foo 
bar 
foobar

而不是:

5
6
11

【问题讨论】:

这是一个典型的 XY 问题。为什么要这样做? 这是一个用例:在测试过程中,我想检查我认为来自模块的每个变量是否都来了。如果typeof var === undefined,我希望能够在屏幕上显示“var is undefined”。对我来说不是 XY 问题。 与此类似的其他帖子被标记为与***.com/questions/3404057/… 重复。所有这些讨论的简短摘要:可以将变量名称和变量的字符串传递给函数。对于其他人来说,有一种方法可以用于全局变量(那些带有window.x 的变量)。对于其他人,可以将每个变量都设为对象。然后,可以使用对象键来获取变量名。对于疯狂的人,可以编写代码来解析程序并以这种方式获取变量(祝你好运!)对我来说:第一个。 【参考方案1】:

您可以将变量放在 object 中,然后以这种方式轻松打印它们:http://jsfiddle.net/5MVde/7/

一切见 fiddle,这是 JavaScript...

var x = 
    foo: 5,
    bar: 6,
    foobar: function ()
        var that=this;
        return that.foo+that.bar
    
;

var myDiv = document.getElementById("results");

myDiv.innerhtml='Variable Names...';
for(var variable in x)

    //alert(variable);
    myDiv.innerHTML+='<br>'+variable;


myDiv.innerHTML+='<br><br>And their values...';
myDiv.innerHTML+='<br>'+x.foo+'<br>'+x.bar+'<br>'+x.foobar();

JavaScript for...in 语句循环遍历 object 的属性。

如果您不希望 foobar 成为函数,则另一种变体(感谢 @elclanrs):http://jsfiddle.net/fQ5hE/2/

【讨论】:

您忘记了var,而thiswindow。行不通。 您的演示表明for..in 有效,但答案有缺陷。尝试打印x.foobar,你会得到NaN @elclanrs,谢谢。更新了答案。 @RalphDavidAbernathy 可以阅读此 ***.com/a/134149/3112803 并决定他想如何处理 foobar 方法。 这看起来好一点,但现在它是一个函数。这样做var x=foo:5,bar:6; x.foobar=x.foo+x.bar;。此外,您仍然缺少几个变量 var myDivfor(var variable in x)。然后myDiv.innerHTML=myDiv.innerHTML你可以写成myDiv.innerHTML+=【参考方案2】:
Utils = 
    eventRegister_globalVariable : function(variableName,handlers)
        eventRegister_JsonVariable(this,variableName,handlers);
    ,
    eventRegister_jsonVariable : function(jsonObj,variableName,handlers)
        if(jsonObj.eventRegisteredVariable === undefined) 
            jsonObj.eventRegisteredVariable=;//this Object is used for trigger event in javascript variable value changes ku
        
        Object.defineProperty(jsonObj, variableName , 
                    get: function()  
                        return jsonObj.eventRegisteredVariable[variableName] ,
                    set: function(value) 
                        jsonObj.eventRegisteredVariable[variableName] = value; handlers(jsonObj.eventRegisteredVariable[variableName]);
                    );
            

【讨论】:

您能否详细说明这个答案或描述一个用例和结果?【参考方案3】:

另一种可能的解决方案是“Object.keys(this)”....这将为您提供数组中的所有变量名称。

【讨论】:

以上是关于打印/显示 JavaScript 变量的名称而不是它的值的主要内容,如果未能解决你的问题,请参考以下文章

如果变量不存在,Bamboo 变量显示名称而不是值

C ++资源文件ProductVersion显示变量名称而不是变量值[重复]

电容器javascript新文件字节显示而不是文件名

在 Kotlin 中显示日期而不是变量

打印C中所有全局和静态变量的值?

表名而不是正在显示的表R闪亮[重复]