传递console.log一个对象在使用两个参数时返回不同 - 为什么?

时间:2018-03-17 20:11:44

标签: javascript object arguments console.log

我一直在使用console.log来记录一个对象,并注意到它没有返回对象的值,除非该对象是console.log中它自己的参数。为什么会这样?

const obj = {animal: "Dog"};

console.log("obj:", obj);   //returns { animal: 'Dog' }
console.log("obj: " + obj); //returns obj: [object Object]
console.log(`obj: ${obj}`); //returns obj: [object Object]

1 个答案:

答案 0 :(得分:3)

当您明确地连接两者时,obj将被转换为其字符串表示形式,即obj.toString(),它将是[object Object]

为了使事情变得更有趣,我们可以检查console.log()的工作原理,例如在Node中。它使用util.format()格式化输出。如果它将其检测为非简单字符串,则inspect为对象并决定进一步的步骤。见https://github.com/nodejs/node/blob/master/lib/util.js#L169