Get variable names with JavaScript
javascript
Solution
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.
Problem
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.