谷歌 131.0.6778.109 版本
控制台输入反斜杠 \ 加一个不属于转义字符的字符,例如 {,会出现下面的情况
'{' -> '{'
'\{' -> '\{'
'\{' -> '\{'
'\\{' -> '\\{'
在 node.js 和 script 标签里打印的都是下面(我觉得是比较合理的):
'{' -> '{'
'\{' -> '{'
'\{' -> '{'
'\\{' -> '\{'
这难道又是 js 的什么神奇特性吗
源于写一个 markdown 插件的时候遇到的问题,我想实现类似这种语法 {{ 表达式 }}
,但是我又想在网页中显示这个语法的纯文本形式,于是我就想这样行不行 \{\{ 表达式 \}\}
,结果语法树中拿到的 node.value 是转义后的结果(反斜杠去掉了),想在浏览器中调试一下发现了这个现象。最后是直接读文件,用 node.position slice 一下拿到没有转义的结果。把自己绕晕了,哈哈哈哈
1
Plumbiu OP 发现 V 站转义了,图片 [console]( https://imgur.com/wxKoNgK)
|
2
Plumbiu OP node 里打印的结果,https://imgur.com/ZqfEL2K
|
3
xiangyuecn 13 天前
看见前面的 ' 了没有,你输入
`1 2` 这个字符串更明显 显示字符串里面的内容,用 console.log |
4
shintendo 13 天前
|
5
shintendo 13 天前
看你一楼的图,结果是带引号的,二楼的图结果不带引号
|
7
zhuisui 13 天前
区分清楚,字符序列分别在编程语言中的字符串类型表示和其本身实际的字符内容。
|
9
Opportunity 13 天前 1
|
10
Plumbiu OP @Opportunity 感谢,明白了
|
11
codehz 13 天前
这个其实我觉得是一个语言上的 bug ,或者说设计偷懒了,但现在已经成为 feature 了! Tagged templates 可以拿到转义之前的原始文本( String.raw`\{`就能拿到原始的
|