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 sho
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:
this
is window
this
is undefined
this
is the constructed objectthis
is the immediate enclosing objectso 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.