在赋值后跟js字符串插值后需要分号

时间:2017-01-27 10:41:47

标签: javascript

我有一个赋值后跟一个字符串插值:

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

我想到了;只有{}之后才是强制性的 有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

3被解释为template literal tag。模板文字可以在“标签”之前,标签是对函数的引用。例如:

function tag() {
  return 'other string';
}
const s = tag`some string`;
console.log(s); // 'other string'

在您的情况下,由于3不是函数,因此会引发错误。分号消除了数字的歧义,并使其被解析为一个数字。