在 ES6 中,模板文字允许使用动态值进行字符串插值。然而,有时我们可能需要推迟模板文字的评估,直到稍后合并动态元素。
问题:我们如何编写代码来推迟 ES6 模板的评估
答案: 有几种方法可以实现this:
使用纯字符串:
使用纯字符串而不是模板字符串以避免立即计算。插值占位符值可以使用自定义原型方法进行格式化,如下所示:
String.prototype.format = function() { var args = arguments; return this.replace(/$\{p(\d)\}/g, function(match, id) { return args[id]; }); }; console.log("Hello, ${p0}. This is a ${p1}".format("world", "test"));
使用标记模板文字:
标记模板文字提供替代方法。但是,需要注意的是,仍然会在不允许插入“p0”等标识符的情况下评估替换。
function formatter(literals, ...substitutions) { return { format: function() { var out = []; for(var i=0, k=0; i < literals.length; i++) { out[k++] = literals[i]; out[k++] = arguments[substitutions[i]]; } out[k] = literals[i]; return out.join(""); } }; } console.log(formatter`Hello, <pre class="brush:php;toolbar:false">console.log(`Hello, ${"world"}. This is a ${"test"}`);
避免延迟:
考虑按预期使用模板字符串,而不使用任何格式函数或延迟。模板字符串提供了一种简洁有效的方法来插入动态值,而无需额外的复杂性。
以上是如何推迟 ES6 模板文字评估?的详细内容。更多信息请关注PHP中文网其他相关文章!