如何控制日志变量/函数的名称?

时间:2018-01-04 02:26:57

标签: javascript

我想这样做:log(variableOrFunction)

能够产生这个:variableOrFunction: actualValue

我试过了:

export const log = (value) => {
  console.log('' + value + ':', value)
  console.log(value)
}

但我得到了这个:[object Object]:

这样做的正确性是什么?

6 个答案:

答案 0 :(得分:6)

您可以使用它们周围的一对括号({})进行记录,这将创建一个以变量名称为关键字的对象:



function someFunction() {};

const someOtherFunction = () => {};

const someValue = 9;

console.log({someFunction});
console.log({someOtherFunction});
console.log({someValue});

const renamed = someFunction;

console.log({renamed})




答案 1 :(得分:2)

“value”是Object类型。使用JSON.stingify查看详细信息,

export const log = (value) => {
  console.log('' + value + ':', JSON.stringify(value))
  console.log(JSON.stringify(value))
}

答案 2 :(得分:2)

如果“value”是Object类型。您可以尝试使用console.dir(value)而不是long console.log,并且您应该能够在控制台中以更好的格式看到对象树键:值对

答案 3 :(得分:2)

你无法按照你所描述的方式在JS解释器中实现这一点。无法在日志函数中获取变量的名称。

您只能在日志函数的调用者中执行此操作,方法是将调用函数转换为字符串并解析代码并获取传递给日志函数的变量名称。

您可以尝试获取日志功能的调用者并执行我所描述的操作,但我不建议这样做。

答案 4 :(得分:1)

这对您有用吗?

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

即使是本身也可以使用功能。

log.call({log});

// It would return the following
log:function() {
  const key = Object.keys(this)[0];
  const value = this[key];
  console.log(`${key}:${value}`);
}

答案 5 :(得分:1)

建立在@CRice答案上:

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