【发布时间】:2016-11-12 02:47:04
【问题描述】:
似乎模板字符串将是一个非常有用的东西传递到一个模块,假设你想让调用代码提供他们想要如何格式化一些输出。
事情是,至少在节点 REPL 中,模板字符串似乎是立即评估的,所以你不能。例如:
var template = `Time: ${now} | Message: ${thing.msg}`;
var thing = {msg : 'Something wicked this way comes'};
var now = new Date();
尝试将这三行输入 REPL 将出错,因为尚未在 template 的行上定义 thing。
有没有办法解决这个问题?我真的很想将模板字符串本身作为变量传递。
请注意,在问这个问题之前,我看到了关于“降低”模板字符串的问题。这根本不是同一个问题,因为我要问的是推迟执行,而不是转换为普通字符串。
【问题讨论】:
-
没有。要推迟对模板字符串中表达式的评估,您需要在 C# 中完成的类似操作以支持 LINQ - 能够在运行时访问任何表达式的解析树,以及在某些上下文中评估该表达式的能力。 javascript 中不存在这样的东西 - 嗯,有
eval但我认为使用它不是一个好主意。 -
我认为可能是这种情况,只是想检查一下我是否遗漏了什么。谢谢。
标签: ecmascript-6