将字符串分隔符更改为反引号:可能产生的影响?

时间:2016-12-05 18:57:29

标签: javascript string syntax ecmascript-6 template-literals

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。

1 个答案:

答案 0 :(得分:2)

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