现象:
后端传来一条数据 pulice_system\1号现场.xlxs ,现在需要保存斜杠后面的数据
尝试:
乍一看很简单, 闭着眼睛一顿操作
var a = 'pulice_system\1号现场.xlxs'
console.log(a.split('\\'))
很快啊 直接运行 走起Y(^o^)Y
SyntaxError: Octal escape sequences are not allowed in strict mode.
at ESMLoader.moduleStrategy (node:internal/modules/esm/translators:119:18)
at ESMLoader.moduleProvider (node:internal/modules/esm/loader:475:14)
at async link (node:internal/modules/esm/module_job:67:21)
嗯 看报错是严格模式导致的, 先拖到浏览器看看
这更不对了 不仅没有得到想要的结果,反而原文本斜杠处变成了\x01 这成了十六制了,越来越离谱了
解决:
明白了问题所在 ,我们尝试用 String.raw() 来解决它
var a = String.raw`pulice_system\1号现场.xlxs`
console.log(a.split('\\'))
// [ 'pulice_system', '1号现场.xlxs' ]
这个String.Raw() 为什么这么神奇呢? MDN 里讲的很明白了:
它的作用类似于 Python 中的字符串前缀
r,用来获取一个模板字符串的原始字符串
所以就不用担心会js 引擎转译为其他代码,这样的话问题就解决了