我已经注意到有关js es6模板语法的错误
当您键入字符串并在其后键入模板语法后,javascript会自动将第一个字符串转换为方法
这里您有一个stackblitz链接来试用 https://stackblitz.com/edit/js-ty94oe
const testTemplateSyntax = 'test' `hello`;
可能是我期望的Uncaught SyntaxError:意外的字符串
但是我要测试的不是函数
编辑
引起错误是因为在tepmlate Tagged templates
但是在任何上下文中都未定义测试,因此无法找到此方法。
答案 0 :(得分:1)
它称为Tagged templates,它允许使用函数解析模板文字
答案 1 :(得分:0)
当您在反引号之前紧接有一个表达式时,解释器解析它的唯一方法是,如果您使用的是标记模板文字,并且该表达式是一个函数。例如:
const testTemplateSyntax = (() => '')`hello`;
console.log(testTemplateSyntax, typeof testTemplateSyntax);
const testTemplateSyntax2 = function(){ return '' }`hello`;
console.log(testTemplateSyntax2, typeof testTemplateSyntax2);
有点像用于标记模板的IIFE。如果左侧的表达式不能作为函数求值,则会抛出您看到的错误。
左侧的任何其他非函数表达式都将导致相同的运行时错误:
5 `foo`
null `foo`
undefined `foo`
({}) `foo`