我是一名JavaScript初学者,尝试通过编程来提高自己的能力,此刻正试图学习“模板文字”,并出于某种原因,通过将“模板文字”放入其中而获得了不同的答案。这是我的代码:
const foodArray = [
{ name: 'Burrito' },
{ name: 'Pizza' },
{ name: 'Burger' },
{ name: 'Pasta' }
];
for (let i = 0; i < foodArray.length; i++) {
console.log(`i value: ${i} | Food Name:`, foodArray[i]);
}
<p id="demo"></p>
所以现在我将'foodArray [i]'放在像'$ {foodArray [i]'这样的'模板文字'里面,但是它给了我'[object Object]',它不应该给出相同的结果吗?也许我在这里做错了事
const foodArray = [
{ name: 'Burrito' },
{ name: 'Pizza' },
{ name: 'Burger' },
{ name: 'Pasta' }
];
for (let i = 0; i < foodArray.length; i++) {
console.log(`i value: ${i} | Food Name: ${foodArray[i]}`);
}
<p id="demo"></p>
答案 0 :(得分:0)
console.log
的作用与模板文字不同。 console.log
会将实际的对象引用发送到控制台客户端,而特定的控制台客户端将从那里决定如何呈现该对象,它们在执行操作时都略有不同。模板文字将始终调用对象.toString()
方法。一些控制台客户端也只调用.toString()
方法,一些使用JSON.stringify
,一些使用复杂的对象资源管理器,SO控制台客户端使用某种方法来生成“漂亮的” JSON。
您可以通过使用JSON.stringify
使它更接近控制台表示形式,或者至少使其与控制台表示形式保持一致:
console.log(`i value: ${i} | Food Name: ${JSON.stringify(foodArray[i])}`);
但是通常,在现实世界的编程中,您不会将对象发送到模板文字,因此,在大多数应用程序中,这并不是一个大问题。