是否可以在 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 端没有调试,只有日志记录。 :(