问题标签 [template-literals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 节点文档中的这个 `...${...}...` 代码是什么意思?
我打算一步一步地学习 Express 库和 Node.js。首先我要看的是 Nodereqiure(moduleName)
函数的细节。
我查看了相关文档,并在示例文档中发现了一些奇怪的代码:
更具体地说是${circle.area(4)}
位。
据我了解$
,JavaScript 就像任何其他变量一样。当我们在客户端 Web 开发中使用它时,它被用作文档功能的委托(我认为)。使用节点时分配给什么?
最重要的是,这个语法是什么意思?${circle.area(4)}
if$
只是对某个函数的引用someFunction()
,它不等同于 this someFunction(){cirle.area(4)}
。我没有看到这怎么可能是有效的语法。
另外,他们为什么不直接直接调用该circle.area()
函数呢?
javascript - eslint 无法识别模板文字
这给出了两个错误
- 'perunString' 已定义但从未使用过
- 字符串必须使用单引号
javascript - 模板文字插值打破了空白表
使用模板文字时,我注意到表格格式存在问题。
当做这样的事情时:
因为 {bye} 部分比 'Goodbye' 少了四个字母,所以字符串打印为:
对于数组或对象的插值,这变得更加复杂。
我想知道是否有人想出了解决此类问题的方法。在插值期间可以保留字符串的间隔表格式。
假设现在模板标签使用字符串和数组。数组与单词之间的空格连接。
以防万一你不能告诉数组方括号、引号、美元、花括号等在插值之前计入字符串的长度(视觉上)。插值后单词之间的空格计入字符串长度。缩进受到额外字符的丢失和标记处理期间添加的字符的影响。
这个问题有一个公认的答案,但我希望看到更多讨论。这个问题可能有不止一个答案。
javascript - es6 javascript推荐使用三元运算符应用模板文字的方法?
我在我的开发中使用 eslint 和 airbnb 风格指南。我收到 eslint 错误建议使用模板文字而不是字符串连接(首选模板)。
它将此行标记为错误
':<br><br><pre style="color:red">' + softTab + err.stack.replace(/\n/g, '<br>' + softTab) + '</pre>' : '';
这是我的代码
我的问题是使用三元运算符应用模板文字的推荐方法是什么?我将它应用于函数返回,但取决于我在此行上应用模板文字的位置会导致错误。理想情况下,我尝试了整条线,但尝试传递${softTab}
给err.stack.replace(/\n/g, '<br>' + softTab)
任何建议或解决方案都会遇到问题。谢谢!
javascript - 字符串文字到模板文字
有没有办法在 Javascript 2015 中将字符串文字转换为模板文字?
例如,类似于 的反义词String.raw
,如下所示:
如果它不存在,那为什么不呢?我认为这可能是防止注射攻击的预防措施,但是……在某些情况下,上述内容确实有用并且没有这种风险
javascript - 文字包含脚本标记时出现“未终止的模板文字”语法错误
我正在使用 ES6 模板文字在字符串中构造一些 HTML,到目前为止它运行良好。但是,一旦我尝试将文字文本</script>
放入我的字符串中,浏览器就会抛出并抛出语法错误:
这是一个引发错误的简单 JavaScript 示例:
请参阅JS Fiddle中的上述代码。
似乎正在发生的事情是它放弃了寻找结尾的文字引号,而是开始将点处的所有内容都视为文字 HTML,因此该点之后的所有 JavaScript 都被错误地视为 HTML,但事实并非如此!
如果我用script
任何其他合法的 HTML 标记(甚至是无效的标记scripty
,如反引号),而是键入了另一个看起来几乎相似的内容。
我实际上是在创建一个字符串(据我所知,在编译时),浏览器不应尝试将其视为 HTML 或以任何方式解析它。那么给了什么?
javascript - 在 ES2015 中,如何以正确的顺序重构标记的模板文字?
使用 MDN 文档中关于模板文字的示例,我们可以创建自定义“标签”函数。
从这里开始,我们如何以与混合时输入的相同顺序构造strings
消息values
?
上面的标签函数在交换值/字符串顺序时会无法保持顺序,例如:
文档: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
javascript - 评估变量内的字符串
我知道 JavaScript 模板文字的基本工作原理。
如果我的模板文字存储在数据库中并且我正在动态查询数据库以获取相应的模板文字怎么办?我该如何评价这个?
这是我的场景:
我已将模板文字作为字符串存储在 DB 中,因为我无法使用反引号将其存储:
我正在数据库中查询字符串。假设我在变量中有这个字符串stringFromDB
。现在我想使用模板文字方法评估这个字符串。
我尝试了以下方法,但它不起作用:
我有一个user
在同一范围内命名的变量,它有一个 value "nithin"
。我期待"welcome nithin"
结果。有什么帮助吗?
javascript - ES6 模板文字是否比 eval 更安全?
对我来说,模板字面量有点像 eval,而且经常有人说使用 eval 是个坏主意。
我不关心模板文字的性能,但我关心注入攻击(以及我可能没有想到的其他安全问题)。
编辑
哪个输出
1、2、3
模板文字在全局层面产生了副作用。既可以通过函数,也可以直接。
编辑 2
如果您ii++
在提示时输入,它会记录
开始: 1
你输入:ii+=1
在模板文字之后:1
评估后:2
编辑 3
我已经开始研究 ECMAScript 规范
- 18.2.1 - 全局对象的函数属性 :: Eval (x)
- 注意它在全局对象上
- 请注意,下一节是关于 eval 的“运行时语义”
- 12.2.9 - 主要表达式 :: 模板文字
- 注意这是一个表达式
- 注意下一节是关于 TemplateStrings 的“静态语义”
虽然我没有深入了解细节,但感觉模板文字的指定比 eval 更安全。