首先要明确,一个字符串的内容是 `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 来处理 