一个奇怪的可能与js转义相关的问题?

作者站长头像
站长
· 阅读数 16

一个js转义问题

一个奇怪的可能与js转义相关的问题? 这是在浏览器的控制台,为什么为出现这种结果,如果要输出'a\b\c\d'这样,请问题如何写

回复
1个回答
avatar
test
2024-06-23

首先要明确,一个字符串的内容是 a\b\c\d 和它的描述是 a\b\c\d 是不同的。根据 JS 的转义规则,字符串内容 a\b\c\d 的描述是 "a\\b\\c\\d"

如果想把内容 a\b\c\d 修改为 a\\b\\c\\d,那对应的描述应该改为 "a\\\\b\\\\c\\\\d",因为 \\ 会转义成 \。所以 4 个 \ 会转义成 2 个 \

为了避免内容和描述的混淆,在代码中生成 "a\\b\\c\\d" 所描述的字符串,可以用 [..."abcd"].join("\\")(当然直接写成 "a\\b\\c\\d" 也是一样的)。

而在 replace 的时候,/\\/"\\" 描述的都是单个反斜线字符。要想替换成两个反斜线字符需要 "\\\\"

另外,如果是为了处理成 JSON,建议直接用 JSON.stringify 来处理

answer image

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容