首页 > 解决方案 > 为什么模板字符串中的数组显示为普通字符串?

问题描述

假设我们有一个对象:

var pet = {
      "name": "Barky",
      "species" : "dog",
      "foods": {
        "likes": ["bones", "carrots"],
        "dislikes": ["tuna"]
      }
    };

console.log(pet.foods.likes);        //returns [ 'bones', 'carrots' ]
console.log(`${pet.foods.likes}`)    //returns "bones,carrots"

如果我使用模板字符串,它显示为普通字符串,为什么?

标签: javascriptecmascript-6

解决方案


在模板文字内部,内部的表达式被隐式强制转换为字符串(因为模板文字总是计算为字符串)。因此,作为插值过程的一部分,该数组.join由逗号编辑,并成为一个字符串(没有[]s,并且项目之间没有字符串分隔符)。

console.log(`${pet.foods.likes}`)    //returns bones,carrots

相当于

console.log(pet.foods.likes.join(','))

或者

console.log(pet.foods.likes.toString())

相反,plainpet.foods.likes是一个数组,因此被记录为带有数组分隔符的数组。


推荐阅读