Ecmascript 6 链接到默认标记函数?

Ecmascript 6 链接到默认标记函数?,ecmascript-6,Ecmascript 6,使用ES6,我们可以创建对模板字符串进行操作的“标记函数”。 是否可以从另一个函数中调用“default”标记函数(即,在反勾号之前没有前缀时使用的函数) e、 g 这样做的结果是,我的标记函数不需要处理连接,也不需要确保参数插入到模板中的正确位置。(当然这并不难,但它很难看,我不想在每个标记函数中都看到它!)String.raw()是默认的标记函数 所以上面的代码可以写成 function html(template, ...substitutions) { substitutions=

使用ES6,我们可以创建对模板字符串进行操作的“标记函数”。 是否可以从另一个函数中调用“default”标记函数(即,在反勾号之前没有前缀时使用的函数) e、 g

这样做的结果是,我的标记函数不需要处理连接,也不需要确保参数插入到模板中的正确位置。(当然这并不难,但它很难看,我不想在每个标记函数中都看到它!)

String.raw()
是默认的标记函数

所以上面的代码可以写成

function html(template, ...substitutions)
{
  substitutions= substitutions.map(s=>SafelyEscapeStringForHtml(s));
  return String.raw(template, ...substitutions);
}

你自己的答案很接近-你可以滥用
String.raw
来给你想要的(解释转义序列):


这本质上只是诱使它认为转义解释的字符串是原始版本。

没有公开与默认值相当的标记函数,
string.raw
公开默认值没有的转义序列。您能解释更多吗?
`\n`==“\n”
,但是
string.raw`\n`==“\\n”
我明白了,那么就没有这样的功能了?:(同意它是重复的。令人恼火的是,链接的问题没有出现在我的搜索中!
function html(template, ...substitutions)
{
  substitutions= substitutions.map(s=>SafelyEscapeStringForHtml(s));
  return String.raw(template, ...substitutions);
}
function html(template, ...substitutions)
{
  substitutions= substitutions.map(s=>SafelyEscapeStringForHtml(s));
  return String.raw({ raw: template }, ...substitutions);
}