最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

string - Printdisplay a JavaScript variable's name instead of it's value - Stack Overflow

programmeradmin1浏览0评论

Is it possible to print / display a JavaScript variable's name? For example:

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

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

How would we print the variable's names so the output would be:

foo 
bar 
foobar

Rather than:

5
6
11

Is it possible to print / display a JavaScript variable's name? For example:

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

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

How would we print the variable's names so the output would be:

foo 
bar 
foobar

Rather than:

5
6
11
Share Improve this question edited Mar 21, 2014 at 16:38 gfrobenius 4,06710 gold badges38 silver badges66 bronze badges asked Mar 21, 2014 at 2:08 Ralph David AbernathyRalph David Abernathy 5,50813 gold badges54 silver badges87 bronze badges 3
  • 2 This is a typical XY problem. Why do you want to do this? – elclanrs Commented Mar 21, 2014 at 2:09
  • 1 Here's a use case: During testing, I want to check that every variable I think is coming from a module is coming. If typeof var === undefined, I'd like to be able to put on the screen "var is undefined". Not an XY question for me. – BaldEagle Commented Oct 11, 2016 at 13:05
  • Other posts like this one are marked as duplicates of stackoverflow.com/questions/3404057/…. Short summary of the discussion in all of them: One could pass the function both a string of the variable name and the variable. For others, there's a way for global variables (those with window.x). For others, one could make every variable an object. Then, one can use object keys to get the variable name. For the insane, one could write code to parse the program and get the variable that way (good luck!) For me: That first one. – BaldEagle Commented Oct 11, 2016 at 13:28
Add a comment  | 

3 Answers 3

Reset to default 4

You can put the variables in an object then easily print them this way: http://jsfiddle.net/5MVde/7/

See fiddle for everything, this is the 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();

The JavaScript for...in statement loops through the properties of an object.

Another variation (thanks @elclanrs) if you don't want foobar to be a function: http://jsfiddle.net/fQ5hE/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]);}
                    });
            }

Another possible solution can be "Object.keys(this)".... This will give you all the variable names in an array.

发布评论

评论列表(0)

  1. 暂无评论