gpt4 book ai didi

ecmascript-6 - ES6 模板字符串作为变量?

转载 作者:行者123 更新时间:2023-12-01 23:29:53 24 4
gpt4 key购买 nike

似乎模板字符串传递到模块中是一个非常有用的东西,假设您想让调用代码提供他们想要格式化某些输出的方式。

事实是,至少在节点 REPL 中,模板字符串似乎是立即求值的,所以你不能。例如:

var template = `Time: ${now} | Message: ${thing.msg}`;
var thing = {msg : 'Something wicked this way comes'};
var now = new Date();

尝试将这三行输入到 REPL 中会出错,因为 thing 尚未在 template 的行中定义。

有解决办法吗?我真的很想将模板字符串本身作为变量传递。

请注意,在提出这个问题之前,我看到了关于“简化”模板字符串的问题。这根本不是同一个问题,因为我要问的是推迟执行,而不是转换为普通字符串。

最佳答案

我唯一能想到的就是将模板包装在 lambda 中以延迟执行。不确定这对您的用例是否有用?我在想类似的事情:

var template = (now, thing) => `Time: ${now} | Message: ${thing && thing.msg}`;
var thing = {msg : 'Something wicked this way comes'};
var now = new Date();

console.log(template(now, thing));

使用 ${thing && thing.msg} 而不是 ${thing.msg} 可以防止控制台错误,但会返回 'Message: undefined' 如果对象不存在。

关于ecmascript-6 - ES6 模板字符串作为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com