是否可以在 Javascript 中复制一些 C 的宏功能?
Is it possible to replicate some of C's macro functionality in Javascript?
我必须为我当前的项目做很多日志记录,我厌倦了写 console.log('abc = ' + abc);
来做这件事,尤其是 abc
可能会很长。
我真的很想能够编写 logVar(abc);
并让它做同样的事情。
这对于带有字符串化运算符的 C 宏来说很简单,例如
#define logVar(x) console.log(#x + ' = ' + x)
在 JS 中可以实现这样的功能吗?我目前的尝试是
function logVar(x)
{
console.log(Object.keys(x)[0] + ' = ' + x);
}
但这只会打印 x = ...
,不管传递的是什么。
有什么方法可以做到这一点而不必传递变量名吗?因为那时输入 console.log(...
可能也一样好。
不要在控制台中连接,因为当 toString 方法不是您想要的时,它会产生非常难看的结果
例如
const test = { "a":"A" }
console.log('test = ' + test); // test = [object Object]
// compared to
console.log('test',test); //test { "a": "A" }
// or simpler
console.log({test});
const b = "My var";
console.log({b});
// Another example
const x = { "a":"A","b":"B" }
Object.entries(x).forEach(([key,val],i) => console.log(i,key,val))
我想通了,是
function logVar(x)
{
return console.log(
Object.keys (x)[0] + ' =',
Object.values(x)[0]);
}
你只需要用额外的花括号调用它,比如
logVar({value});
我需要这个的原因是我正在开发一个 Figma 插件,在 Figma 端没有调试,只有日志记录。 :(
我必须为我当前的项目做很多日志记录,我厌倦了写 console.log('abc = ' + abc);
来做这件事,尤其是 abc
可能会很长。
我真的很想能够编写 logVar(abc);
并让它做同样的事情。
这对于带有字符串化运算符的 C 宏来说很简单,例如
#define logVar(x) console.log(#x + ' = ' + x)
在 JS 中可以实现这样的功能吗?我目前的尝试是
function logVar(x)
{
console.log(Object.keys(x)[0] + ' = ' + x);
}
但这只会打印 x = ...
,不管传递的是什么。
有什么方法可以做到这一点而不必传递变量名吗?因为那时输入 console.log(...
可能也一样好。
不要在控制台中连接,因为当 toString 方法不是您想要的时,它会产生非常难看的结果
例如
const test = { "a":"A" }
console.log('test = ' + test); // test = [object Object]
// compared to
console.log('test',test); //test { "a": "A" }
// or simpler
console.log({test});
const b = "My var";
console.log({b});
// Another example
const x = { "a":"A","b":"B" }
Object.entries(x).forEach(([key,val],i) => console.log(i,key,val))
我想通了,是
function logVar(x)
{
return console.log(
Object.keys (x)[0] + ' =',
Object.values(x)[0]);
}
你只需要用额外的花括号调用它,比如
logVar({value});
我需要这个的原因是我正在开发一个 Figma 插件,在 Figma 端没有调试,只有日志记录。 :(