Questions tagged «template-literals»

8
将长模板文字行包装为多行,而无需在字符串中创建新行
在es6模板文字中,如何在不创建新行的情况下将长模板文字包装成多行? 例如,如果您这样做: const text = `a very long string that just continues and continues and continues` 然后,它将为该字符串创建一个新行符号,以解释它具有新行。如何在不创建换行符的情况下将长模板文字包装到多行?

18
ES6模板文字可以在运行时替换(或重用)吗?
tl; dr:是否可以制作可重用的模板文字? 我一直在尝试使用模板字面量,但我想我只是不明白,而现在却感到沮丧。我的意思是,我认为我明白了,但是“它”不应该是它的工作方式或应该如何得到。它应该变得不同。 我看到的所有示例(甚至是带标签的模板)都要求“替换”必须在声明时而不是在运行时完成,这对我来说对于模板似乎完全没有用。也许我疯了,但是对我来说,“模板”是一个包含令牌的文档,这些令牌在您使用时(而不是在创建时)会被替换,否则只是一个文档(即字符串)。模板与令牌一起存储为令牌,并且在您评估模板时会评估这些令牌。 每个人都举一个可怕的例子,类似于: var a = 'asd'; return `Worthless ${a}!` 很好,但是如果我已经知道了a,我会return 'Worthless asd'或return 'Worthless '+a。重点是什么?说真的 好吧,关键是懒惰。更少的优点,更多的可读性。大。但这不是模板!不是恕我直言。MHO至关重要!恕我直言,问题是模板在声明时就进行了评估,因此,如果这样做,恕我直言: var tpl = `My ${expletive} template`; function go() { return tpl; } go(); // SPACE-TIME ENDS! 由于expletive未声明,因此输出类似的信息My undefined template。超。实际上,至少在Chrome中,我什至无法声明模板;由于expletive未定义,因此将引发错误。我需要的是能够在声明模板后进行替换: var tpl = `My ${expletive} template`; function go() { return tpl; } var …

2
反引号调用函数
我不确定如何解释,但是当我跑步时 console.log`1` 在谷歌浏览器中,我得到的输出像 console.log`1` VM12380:2 ["1", raw: Array[1]] 反引号为什么要调用log函数,为什么要对它进行索引raw: Array[1]? 由Catgocat在JS室提出的问题,但是除了关于模板化字符串的事情之外,没有其他任何答案是合乎情理的。

1
模板字符串作为对象属性名称
为什么JavaScript不允许模板字符串作为对象属性键?例如,当我输入: foo = {`bar`: 'baz'} 进入NodeJS REPL,它会抛出一个 SyntaxError带有长堆栈跟踪的“意外模板字符串”。属性值很好,但是,这并不出乎意料。浏览器中也会发生类似的错误,例如Firebug抛出一个SyntaxError带有“无效属性ID”的错误。 “计算的属性名称”中允许使用模板字符串。例如,这在所有支持以下语法的浏览器中都可以完美编译: var foo = { [`bar` + 1]: `baz` }; 并创建对象 {"bar1": "baz"}。 为什么不允许模板字符串作为文字对象键?是出于性能原因吗?模板字符串必须在运行时进行编译(如果我错了,请纠正我),这意味着每次遇到此对象时,解释器都必须计算对象名称。考虑到“煮熟的”模板字符串之类的因素,这看起来可能会变慢,尽管自ES5以来我们已经有了吸气剂和吸气剂。Firefox并没有将其提及为错误,这就是为什么我发现它出乎意料。将来是否会允许使用该语法?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.