我有一个赋值后跟一个字符串插值:
var a = 3;
`${a} One two three`
"3 One two three"
如果我离开你;在分配之后,代码变为无效:
var a = 3
`${a} One two three`
VM573:2 Uncaught TypeError: 3 is not a function
at <anonymous>:2:1
我想到了;只有{}之后才是强制性的 有人可以解释一下吗?
答案 0 :(得分:2)
3
被解释为template literal tag。模板文字可以在“标签”之前,标签是对函数的引用。例如:
function tag() {
return 'other string';
}
const s = tag`some string`;
console.log(s); // 'other string'
在您的情况下,由于3
不是函数,因此会引发错误。分号消除了数字的歧义,并使其被解析为一个数字。