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

问题描述 投票:8回答:2

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

var a = ````;

抛出:

TypeError:“”不是函数


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

javascript node.js
2个回答
4
投票

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

Backticks calling a function

要在模板文字中嵌套反引号,请使用正斜杠在其前面对其进行转义

console.log(`\`\``);

3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.