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。
答案 0 :(得分:2)
您可以查看string literals和no-substitution-templates的语法
除了`
与'
与"
以及您已经提及的${
的特殊含义之外,只有两种形式的换行符不同。我们可以忽略行延续("转义的换行符"),因为你的缩小器无论如何都会剥离它们,但是普通的换行符在模板内部有效而不在字符串文字中,所以如果你来回转换你就可以了。我也必须关心这些。如果字符串文字包含\n
,您甚至可以使用它们来保存另一个字节。