Javascript:打印函数调用



我有一个这样的函数:

const ILog = <T>(value: T): T => {
console.log(value);
return value;
}

它的作用就像console.log,还有一个额外的好处,那就是它保持了原有的价值。

然而,我想区分同一函数的调用:

let a = false;
let b = false;
let c = false;
ILog(a);
ILog(b);
ILog(c);
// current
$ node file.js
false
false
false
// expected
$ node file.js
ILog(a): false
ILog(b): false
ILog(c): false

一些javascript黑魔法能做到这一点吗?

这将如何工作的一个例子是这样的:

const ILog = (name: string) => <T>(value: T): T => {
console.log(`ILog(${name})`, value);
return value;
}
ILog("[some_expression]")([some_expression]);
$ node file.js
ILog([some_expression]): [result]

不重复字符串形式的表达式。

没有神奇的方法可以做到这一点,如果你真的想做的话,你可以做这样的事情:

const ILog = <T>(value: T, argumentName: string): T => {
console.log(`ILog(${argumentName}): ${value}`);
return value;
}
const a = false;
ILog(a, "a");

或者使用您现有的ILog功能

ILog(`ILog(a): ${a}`);

最新更新