【发布时间】:2016-12-05 18:57:29
【问题描述】:
ES6 引入了template strings,由反引号` 分隔。
在哪些情况下用反引号替换单个 ' 或双引号 " 会产生不同的结果,或者不安全?
代码中现有反引号的转义是操作的一部分。
// before
var message = "Display backtick ` on screen";
// after
var message = `Display backtick \` on screen`;
我了解任何包含 ${...} 的字符串都会失败,因为它会被(错误)解释为占位符。还有其他相关的模式吗?
上下文:这是用于自动处理输入代码的development of a JS compression tool。后者及其包含的字符串是用户提供的,因此我无法控制其内容。可以做出的唯一假设是它是有效的 Javascript。
执行环境可以通过任何最近的浏览器或 Node.js。
【问题讨论】:
-
这样的事情怎么样: var message = "你好,我是 Mike,很高兴认识你"。那会是“你好,我是迈克,很高兴认识你”吗?
-
@SariRahal OP 询问关于替换引号 around 字符串。
-
我是否可以建议您使用解析器来处理代码,而不是考虑使用搜索和替换来处理它? esprima.org 应该有你需要的所有功能。
-
@Siorki,看看Tagged template literals,尤其是Raw Strings 功能。这与单引号或双引号有显着差异。
-
@Thomas,这些 - 连同表达式插值 - 是我只打算用 ` 替换
'或"的原因,而不是相反。模板文字有太多新功能,普通的旧引号不支持。
标签: javascript string syntax ecmascript-6 template-literals