NodeJS中的嵌套模板字符串错误

时间:2017-12-20 10:08:47

标签: javascript node.js

为什么以下行导致Node.js中出现运行时错误?

var a = ````;

抛出:

  

TypeError:“”不是函数

使用Node.js版本4.x,6.x,8.x和9.x进行测试

2 个答案:

答案 0 :(得分:4)

前两个反引号是空字符串,而接下来的两个反引号将作为tagged template literals,它将调用它之前的函数。由于""(空字符串)不是可调用的函数,因此会抛出错误。

Backticks calling a function

要在模板文字中嵌套反引号,请使用正斜杠

对其进行转义
console.log(`\`\``);

答案 1 :(得分:3)

这是因为你有两个模板文字紧挨着,没有任何类型的连接表达式。解析器将其识别为标记函数调用,如String.raw`stuff here`。第一个``被评估,结果为"",然后JavaScript引擎尝试将该空字符串作为函数调用,传入已处理的模板文字。由于空字符串不是函数,因此会出错。

使用""``可以更直接地获得相同的错误。 : - )