当最后一个字符是`\`时``String.raw`

String.raw非常有用。 例如:

let path = String.raw`C:pathtofile.html`

但是,当模板字符串的最后一个字符是 ,它将成为语法错误。

let path = String.raw`C:pathtodirectory`

未捕获的SyntaxError:未终止的模板文字

暂时,我使用这种方法。

let path = String.raw`C:pathtodirectory `.trimRight()

我可以使用String.raw编写最后一个字符是模板字符串吗?


以下是几种可能的解决方法。 我最喜欢的可能是创建一个自定义模板标签dir来解决你的问题。 我认为它使得语法更清晰并且更加语义化。

let path

// Uglier workarounds
path = String.raw `C:pathtodirectory${``}`
path = String.raw `C:pathtodirectory`+``
path = `C:pathtodirectory`

// Cleanest solution
const dir = ({raw}) => raw + ``

path = dir `C:pathtodirectory`

console.log(path)

根据https://hacks.mozilla.org/2015/05/es6-in-depth-template-strings-2/转义序列在模板字符串中除了 $ {和`外不变。 因此,人们无法摆脱逃避角色。 基于此,看起来您的解决方案是实现您的目标的最佳方式。

链接地址: http://www.djcxy.com/p/38615.html

上一篇: `String.raw` when last character is `\`

下一篇: character string literal and string literal in standard?