Adam Gosnell
Adam Gosnell

Reputation: 31

Returning a variable name in a function (Javascript)

As I'm debugging, I'm consistently writing this bit of code:

a = 2;
// do some operation on variable a
console.log("The a variable is now " + a);

I wondered if I might create a function that shortens that process, like this,

function varlog(x) {
  var vartext = // this is what I don't know
  return "The " + vartext + " variable is now " + x;
}

var a = 2;
console.log(varlog(a));

Two questions,

  1. Is there a better way to solve this problem that I'm not seeing?
  2. If not, what should the vartext be to solve this problem?

Upvotes: 0

Views: 101

Answers (2)

Parth Vaghani
Parth Vaghani

Reputation: 76

You can use "Reflect" as below

function easyDebug(variable){

    let name = Reflect.ownKeys(variable)[0];
    let vals = JSON.stringify(variable[name]);
    console.log("The ( "+ name +" ) variable is now = ( " + vals +" )");
}

let a=5;
easyDebug({a});
//Will output
//The ( a ) variable is now = ( 5 )

let arr=[5,6,7];
easyDebug({arr});
//Will output
//The ( arr ) variable is now = ( [5,6,7] )

let obj={"key1":"val1","key2":"val2"};
easyDebug({obj});
//Will output
//The ( obj ) variable is now = ( {"key1":"val1","key2":"val2"} )

let obj2={obj};
easyDebug({obj2});
//Will output
//The ( obj2 ) variable is now = ( {"obj":{"key1":"val1","key2":"val2"}} )

let arrObj = [obj];
easyDebug({arrObj});
//Will output
//The ( arrObj ) variable is now = ( [{"key1":"val1","key2":"val2"}] )

Upvotes: 3

Nina Scholz
Nina Scholz

Reputation: 386620

By handing over a variable, the name is not known. the only part, where a variable is known, is to use short hand properties, where the variable name is now the property.

function varlog(x) {
    const [k, v] = Object.entries(x)[0];
    return `The ${k} variable is now ${v}`;
}

const a = 2;

console.log(varlog({ a })); // call with short hand property

Upvotes: 2

Related Questions