V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Plumbiu
V2EX  ›  程序员

发现浏览器控制台一点神奇的现象(可能是 bug?)

  •  
  •   Plumbiu ·
    Plumbiu · 2 天前 · 1760 次点击

    谷歌 131.0.6778.109 版本

    控制台输入反斜杠 \ 加一个不属于转义字符的字符,例如 {,会出现下面的情况

    '{' -> '{'

    '\{' -> '\{'

    '\{' -> '\{'

    '\\{' -> '\\{'

    在 node.js 和 script 标签里打印的都是下面(我觉得是比较合理的):

    '{' -> '{'

    '\{' -> '{'

    '\{' -> '{'

    '\\{' -> '\{'

    这难道又是 js 的什么神奇特性吗

    第 1 条附言  ·  2 天前

    源于写一个 markdown 插件的时候遇到的问题,我想实现类似这种语法 {{ 表达式 }},但是我又想在网页中显示这个语法的纯文本形式,于是我就想这样行不行 \{\{ 表达式 \}\},结果语法树中拿到的 node.value 是转义后的结果(反斜杠去掉了),想在浏览器中调试一下发现了这个现象。最后是直接读文件,用 node.position slice 一下拿到没有转义的结果。把自己绕晕了,哈哈哈哈

    11 条回复    2024-12-09 14:13:56 +08:00
    Plumbiu
        1
    Plumbiu  
    OP
       2 天前
    发现 V 站转义了,图片 [console]( https://imgur.com/wxKoNgK)
    Plumbiu
        2
    Plumbiu  
    OP
       2 天前
    node 里打印的结果,https://imgur.com/ZqfEL2K
    xiangyuecn
        3
    xiangyuecn  
       2 天前
    看见前面的 ' 了没有,你输入
    `1
    2`
    这个字符串更明显

    显示字符串里面的内容,用 console.log
    shintendo
        4
    shintendo  
       2 天前
    REPL 和 console.log()是两回事

    shintendo
        5
    shintendo  
       2 天前
    看你一楼的图,结果是带引号的,二楼的图结果不带引号
    Plumbiu
        6
    Plumbiu  
    OP
       2 天前
    @shintendo 原来是这个原因,学到了
    zhuisui
        7
    zhuisui  
       2 天前
    区分清楚,字符序列分别在编程语言中的字符串类型表示和其本身实际的字符内容。
    Plumbiu
        8
    Plumbiu  
    OP
       2 天前
    @zhuisui 为啥一个 \ 加 { 就不显示实际内容了,而显示转义内容,我又被绕晕了
    Opportunity
        9
    Opportunity  
       2 天前   ❤️ 1
    Plumbiu
        10
    Plumbiu  
    OP
       2 天前
    @Opportunity 感谢,明白了
    codehz
        11
    codehz  
       2 天前
    这个其实我觉得是一个语言上的 bug ,或者说设计偷懒了,但现在已经成为 feature 了! Tagged templates 可以拿到转义之前的原始文本( String.raw`\{`就能拿到原始的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1168 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 23:48 · PVG 07:48 · LAX 15:48 · JFK 18:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.