Javascript 模板文字奇怪的行为
Javascript template literal strange behaviour
为什么下面的代码在语法上是正确的?
let v = ``(oldVal-newVal) / 1000;
它给出了以下运行时错误:
Uncaught TypeError: "" is not a function
我的猜测是 `` 变成了标记模板,而 "" 将是标记名称,但不确定。
(我不小心在 VSCode 中输入了它而不是 Ctrl+` 快捷键。花了一天时间才找到它。;)
标记的模板采用以下形式:
function myTaggedTemplate(...) { }
并被调用:
myTaggedTemplate`...`
您在左侧有一个引用函数的变量名,在右侧有一个模板字符串。
你拥有的相当于:
const left = ``;
left(oldVal-newVal);
错误提示“不是函数”,因为它是字符串,不是函数。
它在语法上是有效的,因为您可以尝试将任何表达式的结果视为一个函数。确定它是否是函数发生在 run-time.
为什么下面的代码在语法上是正确的?
let v = ``(oldVal-newVal) / 1000;
它给出了以下运行时错误:
Uncaught TypeError: "" is not a function
我的猜测是 `` 变成了标记模板,而 "" 将是标记名称,但不确定。 (我不小心在 VSCode 中输入了它而不是 Ctrl+` 快捷键。花了一天时间才找到它。;)
标记的模板采用以下形式:
function myTaggedTemplate(...) { }
并被调用:
myTaggedTemplate`...`
您在左侧有一个引用函数的变量名,在右侧有一个模板字符串。
你拥有的相当于:
const left = ``;
left(oldVal-newVal);
错误提示“不是函数”,因为它是字符串,不是函数。
它在语法上是有效的,因为您可以尝试将任何表达式的结果视为一个函数。确定它是否是函数发生在 run-time.