在 ES5 及以下版本中,我可以在 JS 字符串中使用 ANSI 颜色,例如
"\033[31m Hello World\033[0m"
.
使用 ES6 模板字符串时,出现错误:
SyntaxError: Octal literals are not allowed in template strings.
我已经尝试过 \u{31m}
但它也没有用。
最佳答案
根据standard , 八进制转义不在“严格模式”下处理。标准中没有给出基本原理,但重复使用术语“遗留”和“八进制”可能是试图说服读者该标准的唯一目的是用于使用 UTF-8 的 Web 浏览器。
您对 \u{31m}
的试验偏离了目标:大括号围绕着十六进制数字。你的意思可能看起来像这样:
"\u{1b}[31m Hello World\u{1b}[0m"
这与
相同"\u001b[31m Hello World\u001b[0m"
"\u{1b}"
或 "\u001b"
是转义符(参见 ECMA-35 和 ECMA-48),不可打印。字符串中的其他字符是可打印的(并且不必转义)。
进一步阅读:
关于javascript - 如何在 ES6 模板字符串中使用颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35624801/