I want to do this: log(variableOrFunction)
And be able to produce this: variableOrFunction: actualValue
.
I tried this:
You can’t achieve this within the JS interpreter the way you have described. There is no way to get the name of a variable inside of your log function.
You can only do it inside of the caller of your log function, by converting the calling function to a string and parsing the code and grabbing the variable name passed to your log function.
You could try to get the caller of the log function and do what I have described but I would not recommend this.
If “value” is of type Object. You can try console.dir(value) instead of the long console.log, and you should be able to see the Object tree key: value pairs in a better formate in the console
You can log them with a pair of braces around them ({}
), which will create an object with the name of the variable as the key:
function someFunction() {};
const someOtherFunction = () => {};
const someValue = 9;
console.log({someFunction});
console.log({someOtherFunction});
console.log({someValue});
const renamed = someFunction;
console.log({renamed})
Would this work for you?
const log = function() {
const key = Object.keys(this)[0];
const value = this[key];
console.log(`${key}:${value}`);
}
let someValue = 2;
log.call({someVlaue}); //someValue:2
Works with function too, even itself.
log.call({log});
// It would return the following
log:function() {
const key = Object.keys(this)[0];
const value = this[key];
console.log(`${key}:${value}`);
}
The "value" is of type Object. Use JSON.stingify to see in details,
export const log = (value) => {
console.log('' + value + ':', JSON.stringify(value))
console.log(JSON.stringify(value))
}
Built on @CRice answer:
const arr = [10, 20, 30, 40, 50]
const obj = { a: 10, b: 20, c: 30, d: { e: 40 } }
const str = "abcdef"
function slog(obj) {
Object.entries(obj).forEach(([key, value]) => console.log(key + ":", value))
}
slog({ arr }) // arr: [ 10, 20, 30, 40, 50 ]
slog({ obj }) // obj: { a: 10, b: 20, c: 30, d: { e: 40 } }
slog({ str }) // str: abcdef