Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get variable names with JavaScript

Tags:

javascript

I want to create a log function where I can insert variable names like this:

var a = '123',
    b = 'abc';

log([a, b]);

And the result should look like this in the console.log

a: 123
b: abc

Get the value of the variable is no problems but how do I get the variable names? The function should be generic so I can't always assume that the scope is window.

like image 315
arpo Avatar asked Apr 23 '12 06:04

arpo


People also ask

How do you print a variable in JavaScript?

log() is a function in JavaScript that is used to print any kind of variables defined before in it or to just print any message that needs to be displayed to the user. Syntax: console. log(" ");

What can I use instead of eval in JavaScript?

An alternative to eval is Function() . Just like eval() , Function() takes some expression as a string for execution, except, rather than outputting the result directly, it returns an anonymous function to you that you can call. `Function() is a faster and more secure alternative to eval().


1 Answers

so the argument is an array of variables? then no, there is no way to get the original variable name once it is passed that way. in the receiving end, they just look like:

["123","abc"];

and nothing more


you could provide the function the names of the variables and the scope they are in, like:

function log(arr,scope){
    for(var i=0;i<arr.length;i++){
        console.log(arr[i]+':'scope[arr[i]]);
    }
}

however, this runs into the problem if you can give the scope also. there are a lot of issues of what this is in certain areas of code:

  • for nonstrict functions, this is window
  • for strict functions, this is undefined
  • for constructor functions, this is the constructed object
  • within an object literal, this is the immediate enclosing object

so you can't rely on passing this as a scope. unless you can provide the scope, this is another dead end.


if you pass them as an object, then you can iterate through the object and its "keys" and not the original variable names. however, this is more damage than cure in this case.

like image 113
Joseph Avatar answered Oct 18 '22 01:10

Joseph