JS - 模板文字意外,
JS - Template literals unexpected ,
所以我只是对模板文字进行了一些实验,我的 html 输出中似乎出现了意想不到的 ,
。
任何人都可以向我解释为什么这些 ,
在我使用 map
时显示?
this.highscore = [
{
"username" : "Thor",
"highScore": 1002023
},
{
"username" : "Hulk",
"highScore": 1037465
},
{
"username" : "Superman",
"highScore": 5948393
},
{
"username" : "Spiderman",
"highScore": 5949384
}
]
template() {
return `high score: ${this.highscore.map(user => `<p>Username: ${user.username} <br> ${user.highScore}</p>`)}`
}
render() {
this.innerHTML = this.template()
}
输入 HTML
Username: Thor
1002023
, /* <----- where does this sucker come from? */
Username: Hulk
1037465
,
Username: Superman
5948393
,
Username: Spiderman
5949384
只是奖金
从 T.J 解释为什么会发生这种情况。 Crowder 是正确的,他建议我应该使用 join
并且为了它的乐趣我用自定义函数标记模板来处理它,将它留在这里咯咯笑:
function removeYaOldBugger(strings, personExp, ageExp) {
return personExp.join("")
}
template() {
return removeYaOldBugger`high score: ${this.highscore.map(user => `<p>Username: ${user.username} <br> ${user.highScore}</p>`)}`
}
因为map
returns一个数组,然后${...}
强制转换为字符串,其中使用Array#join
,默认使用,
作为元素之间的分隔符。您可以通过在 map
调用的末尾添加 .join("")
来修复它:
return `high score: ${this.highscore.map(user => `<p>Username: ${user.username} <br> ${user.highScore}</p>`).join("")}`
// >>-------------------------------------------------------------------------------------------------------^^^^^^^^^
所以我只是对模板文字进行了一些实验,我的 html 输出中似乎出现了意想不到的 ,
。
任何人都可以向我解释为什么这些 ,
在我使用 map
时显示?
this.highscore = [
{
"username" : "Thor",
"highScore": 1002023
},
{
"username" : "Hulk",
"highScore": 1037465
},
{
"username" : "Superman",
"highScore": 5948393
},
{
"username" : "Spiderman",
"highScore": 5949384
}
]
template() {
return `high score: ${this.highscore.map(user => `<p>Username: ${user.username} <br> ${user.highScore}</p>`)}`
}
render() {
this.innerHTML = this.template()
}
输入 HTML
Username: Thor
1002023
, /* <----- where does this sucker come from? */
Username: Hulk
1037465
,
Username: Superman
5948393
,
Username: Spiderman
5949384
只是奖金
从 T.J 解释为什么会发生这种情况。 Crowder 是正确的,他建议我应该使用 join
并且为了它的乐趣我用自定义函数标记模板来处理它,将它留在这里咯咯笑:
function removeYaOldBugger(strings, personExp, ageExp) {
return personExp.join("")
}
template() {
return removeYaOldBugger`high score: ${this.highscore.map(user => `<p>Username: ${user.username} <br> ${user.highScore}</p>`)}`
}
因为map
returns一个数组,然后${...}
强制转换为字符串,其中使用Array#join
,默认使用,
作为元素之间的分隔符。您可以通过在 map
调用的末尾添加 .join("")
来修复它:
return `high score: ${this.highscore.map(user => `<p>Username: ${user.username} <br> ${user.highScore}</p>`).join("")}`
// >>-------------------------------------------------------------------------------------------------------^^^^^^^^^