gpt4 book ai didi

ecmascript-6 - 将 JS 对象作为范围传递给 JS 模板文字?

转载 作者:行者123 更新时间:2023-12-03 13:54:56 27 4
gpt4 key购买 nike

在python中,您可以像这样进行变量字符串插值:

song_context = { "adjective": "funny" }
ella_sings = "my {adjective} valentine".format(**song_context)

在这里, song_context对象格式 ella_sings 中的变量字符串。

在 ES6 中,有一种内置的方法可以使用模板文字来做这样的事情 ?我正在寻找一种快速方法来显式定义给定字符串的替换空间。前任:

const song_context = { adjective: "funny" }
const ella_sings = `my ${adjective} valentine`.format(song_context)

上下文:我知道其他方法可以做到这一点,例如使用 a template library或做 multiple find and replace ,但我想知道 ES6 的任何部分是否开箱即用地支持这个用例。我浏览了 template literal part of the ECMAScript 6.0 standard它非常清楚地说明 "Let ctx be the running execution context"但似乎很难相信他们不会提供一种在必要时更明确地了解上下文的方法。

最佳答案

In ES6 is there a built-in way to do something like this with template literals?



模板文字没有特殊的逻辑。 ${..}之间的代码括号只是一个正常的表达式,它被评估为一个值。
`my ${adjective} valentine`

总是会寻找一个名为 adjective 的变量在本地范围内。你当然可以改变它来做
`my ${song_context.adjective} valentine`

如果你不想改变它的那部分,那么你总是可以使用解构,例如
const {adjective} = song_context;
const ella_sings = `my ${adjective} valentine`

或使用 IIFE:
const ella_sings = ({adjective}) => `my ${adjective} valentine`)(song_context);

如果需要,您也可以围绕模板文字构建自己的模板系统,但它开始变得越来越复杂,并且失去了让您首先想要使用模板文字的大部分好处。

关于ecmascript-6 - 将 JS 对象作为范围传递给 JS 模板文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46433901/

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