javascript 中通用模板文字函数的标记
Tag for generic template literal function in javascript
我的目标是编写一个像
这样的标记模板函数
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) => ...;
并尝试按照 this link
中的示例进行操作
也许还有更短的方法,但这是我的方法:
const myTaggedTemplate = (strings, ...vars) => {
let result = '';
strings.forEach((str, i) => {
result += `${str}${i === strings.length - 1 ? '' : vars[i]}`;
});
return result;
};
如何定义标记模板函数
如果您定义一个标记模板函数,它必须接收一个字符串数组作为第一个参数,并接收任意数量的表达式作为后续参数。这些字符串都是您插入的表达式之间的字符串(在所有 ${...}
之间),所有表达式都是您放入 ${...}
.
中的值
示例代码
let numExp = 2;
function tagFunction(strings, ...expressions) {
let returnString = "";
for (let i = 0; i < expressions.length; i++) {
returnString += strings[i] + expressions[i];
}
returnString += strings[strings.length - 1];
return returnString;
}
console.log(
tagFunction`Using function \"${tagFunction.name}\" with ${numExp} expressions`
);
我的目标是编写一个像
这样的标记模板函数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) => ...;
并尝试按照 this link
中的示例进行操作也许还有更短的方法,但这是我的方法:
const myTaggedTemplate = (strings, ...vars) => {
let result = '';
strings.forEach((str, i) => {
result += `${str}${i === strings.length - 1 ? '' : vars[i]}`;
});
return result;
};
如何定义标记模板函数
如果您定义一个标记模板函数,它必须接收一个字符串数组作为第一个参数,并接收任意数量的表达式作为后续参数。这些字符串都是您插入的表达式之间的字符串(在所有 ${...}
之间),所有表达式都是您放入 ${...}
.
示例代码
let numExp = 2;
function tagFunction(strings, ...expressions) {
let returnString = "";
for (let i = 0; i < expressions.length; i++) {
returnString += strings[i] + expressions[i];
}
returnString += strings[strings.length - 1];
return returnString;
}
console.log(
tagFunction`Using function \"${tagFunction.name}\" with ${numExp} expressions`
);