代码之家  ›  专栏  ›  技术社区  ›  Lonnie Best

为什么String.raw不能以反斜杠结尾?

  •  1
  • Lonnie Best  · 技术社区  · 6 年前

    String.raw 可用于创建包含反斜杠的字符串,而无需将这些反斜杠加倍。

    在历史上,创建字符串时需要将反斜杠加倍:

    let str = "C:\\Program Files\\7-Zip";
    console.log(str);

    let str = String.raw`C:\Program Files\7-Zip`;
    console.log(str);

    上面的代码工作得很好,但是今天我发现如果原始字符串以反斜杠结尾,它就不工作了:

    let str = String.raw`Can't End Raw With Backslash\`;
    console.log(str);

    {
      "message": "SyntaxError: `` literal not terminated before end of script",
      "filename": "https://stacksnippets.net/js",
      "lineno": 14,
      "colno": 4
    }
    

    1 回复  |  直到 6 年前
        1
  •  4
  •   tadman    6 年前

    它可以,但请记住有“字面”字符和反斜杠字符。你要的是 字面意义的

    let str = String.raw`...\\`;
    

    紧跟在反斜杠后面的任何字符都将被视为其文字版本,而不管它是什么。 String.raw 可以解决其中的一些限制,但不是全部。它抑制了诸如 \n 但不能防止你不小心添加了一个字面上的反勾。