Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中通用模板文本函数的标记_Javascript_Template Literals_Tagged Templates - Fatal编程技术网

javascript中通用模板文本函数的标记

javascript中通用模板文本函数的标记,javascript,template-literals,tagged-templates,Javascript,Template Literals,Tagged Templates,我的目标是编写一个带标记的模板函数,如 myTemplateTagFunction`some text ${variable} etc. etc.` …其行为类似于javascript中的默认模板文本函数 我的第一次尝试是 let myTaggedTemplate = args => `${args}` 但这很快就打破了 > myTaggedTemplate`hello world ${2 + 5}` // "hello world ," > `hel

我的目标是编写一个带标记的模板函数,如

myTemplateTagFunction`some text ${variable} etc. etc.`
…其行为类似于javascript中的默认模板文本函数

我的第一次尝试是

let myTaggedTemplate = args => `${args}`
但这很快就打破了

> myTaggedTemplate`hello world ${2 + 5}`
// "hello world ,"

> `hello world ${2 + 5}`
// "hello world 7"

必须有一种更简单的方法来实现这一点,但我没有找到?

您需要更改您的功能:

let myTaggedTemplate = (strings,...values) => ...;

试着按照

中的例子来做,也许有一个较短的方法,但这是我的方法:

const myTaggedTemplate = (strings, ...vars) => {
    let result = '';
    strings.forEach((str, i) => {
        result += `${str}${i === strings.length - 1 ? '' : vars[i]}`;
    });
    return result;
};
如何定义带标记的模板函数 如果定义带标记的模板函数,它必须接收字符串数组作为第一个参数,并接收任意数量的表达式作为后续参数。字符串都是插入表达式之间的字符串(在所有
${…}
之间),所有表达式都是您输入到
${…}
中的值

示例代码
让numExp=2;
函数标记函数(字符串,…表达式){
让returnString=“”;
for(设i=0;i);使用默认的模板文本函数,您是指模板文本在没有标记的情况下的行为方式吗?标记的模板不能这样工作。您是否看过(例如)MDN上的文档,以查看参数是否实际传递给标记的模板函数?@Quentin我看过文档,这就是为什么我第一次尝试将传入参数传递回模板文本函数的原因。如果你真的很了解他们,请把你的理解用于回答这个问题question@rob-戈登-这个问题的前提没有真正意义。我可以想出一个解决办法(和彼得一样),但坦率地说,这是愚蠢的。如果你想得到这种效果,只需使用模板文字。@Quentin如果你想知道我为什么要问,那就问问我为什么要问。如果你想嘲笑这个问题,而不是质问,那就由你来决定,那
===undefined
检查有什么用?这不是普通模板字符串的工作方式。字符串数组可能比vars数组长,因此对于最后一个索引,vars[i]将是未定义的。对于编辑,这更好。