为什么以下行导致Node.js中出现运行时错误?
var a = ````;
抛出:
TypeError:“”不是函数
使用Node.js版本4.x,6.x,8.x和9.x进行测试
答案 0 :(得分:4)
前两个反引号是空字符串,而接下来的两个反引号将作为tagged template literals,它将调用它之前的函数。由于""
(空字符串)不是可调用的函数,因此会抛出错误。
要在模板文字中嵌套反引号,请使用正斜杠
对其进行转义console.log(`\`\``);
答案 1 :(得分:3)
这是因为你有两个模板文字紧挨着,没有任何类型的连接表达式。解析器将其识别为标记函数调用,如String.raw`stuff here`
。第一个``
被评估,结果为""
,然后JavaScript引擎尝试将该空字符串作为函数调用,传入已处理的模板文字。由于空字符串不是函数,因此会出错。
使用""``
可以更直接地获得相同的错误。 : - )