javascript - 将字符串分隔符更改为反引号 : possible impact?

标签 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。

最佳答案

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

关于javascript - 将字符串分隔符更改为反引号 : possible impact?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40981357/

相关文章:

java空值检查语法差异

javascript - 数据属性不适用于动态添加的 li 元素

javascript - 如何在长时间执行 JavaScript 期间显示旋转器?

javascript - 获取下拉菜单特定的选定值并显示确认框

css - 如何在 Angular 组件的样式标签中使用字符串插值?

java - 抛硬币方法建议

php - 我该如何解决这个错误?弃用 : mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead

perl - 您可以引用 Perl 中的内置函数吗?

javascript - 指针事件禁用 anchor 标记

c++ - 什么是 (void (*) (void))((uint32_t)&__STACK_END)?