7

ES6 引入了由反引号分隔的模板字符串`

在哪些情况下,用反引号替换字符串周围的单引号'或双"引号会产生不同的结果,或者是不安全的?

代码中现有反引号的转义是操作的一部分。

// before
var message = "Display backtick ` on screen";

// after
var message = `Display backtick \` on screen`;

我知道任何包含的字符串${...}都会失败,因为它会被(错误)解释为占位符。还有其他相关模式吗?


上下文:这是用于开发一个自动处理输入代码的JS压缩工具。后者及其包含的字符串是用户提供的,因此我无法控制其内容。唯一可以做出的假设是它是有效的 Javascript。

执行环境可以通过任何最近的浏览器或 Node.js。

4

1 回答 1

2

您可以检查字符串文字no-substitution-templates的语法。
除了`vs. 'vs."和你已经提到的特殊含义之外,${这两种形式之间只有换行符不同。我们可以忽略换行符(“转义的换行符”),因为您的压缩器无论如何都会将它们剥离,但是普通换行符在模板内是有效的,而不是在字符串文字内,所以如果你来回转换你必须关心那些出色地。如果您的字符串文字包含\n.

于 2016-12-05T21:06:45.860 回答