在使用两个参数时以不同方式传递 console.log 一个对象 returns - 为什么?
Passing console.log an object returns differently when using two arguments - why?
我一直在使用 console.log 记录一个对象,并注意到它不会 return 对象的值,除非该对象是它自己在 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]
当您显式连接两者时,obj 将被转换为其字符串表示形式,又名 obj.toString()
,即 [object Object]
.
为了让事情更有趣,我们可以检查 console.log()
是如何工作的,例如在 Node.js 中。它使用 util.format()
来格式化输出。如果它检测到它不是一个简单的字符串,它 inspect
s 对象并决定进一步的步骤。参见 https://github.com/nodejs/node/blob/master/lib/util.js#L169
我一直在使用 console.log 记录一个对象,并注意到它不会 return 对象的值,除非该对象是它自己在 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]
当您显式连接两者时,obj 将被转换为其字符串表示形式,又名 obj.toString()
,即 [object Object]
.
为了让事情更有趣,我们可以检查 console.log()
是如何工作的,例如在 Node.js 中。它使用 util.format()
来格式化输出。如果它检测到它不是一个简单的字符串,它 inspect
s 对象并决定进一步的步骤。参见 https://github.com/nodejs/node/blob/master/lib/util.js#L169