V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
66beta
V2EX  ›  问与答

chrome 的 console.log() 返回 undefined 怎么办?

  •  
  •   66beta · 2014-11-20 14:08:01 +08:00 · 11852 次点击
    这是一个创建于 3417 天前的主题,其中的信息可能已经有所发展或是发生改变。
    可能被其他JS库覆盖了,不能调试了,咋办?
    第 1 条附言  ·  2014-11-20 21:50:23 +08:00
    对不起没写清楚,是console.log('xxx');返回undefined。
    第 2 条附言  ·  2014-11-21 09:22:58 +08:00
    console.log('abc'); 应该显示abc,但是没显示,只返回了undefined
    21 条回复    2014-11-21 09:46:54 +08:00
    lizheming
        1
    lizheming  
       2014-11-20 14:10:22 +08:00
    console.error
    console.warn
    console.table
    这么多呢..别吊死在一棵树上上..
    lizheming
        2
    lizheming  
       2014-11-20 14:19:25 +08:00   ❤️ 1
    如果console都被覆盖了的话也可以自己做调试输出啊..具体查看: http://segmentfault.com/blog/laopopo/1190000000731903
    FrankFang128
        3
    FrankFang128  
       2014-11-20 14:23:44 +08:00
    本来就是返回 undefined 啊。
    什么叫不能调试呢?请详述。
    是在不行请用 debugger 调试
    Mutoo
        4
    Mutoo  
       2014-11-20 14:32:34 +08:00
    console = null; // that's evil;
    learnshare
        5
    learnshare  
       2014-11-20 14:36:23 +08:00
    哪个库这么牛,直接删除 console 来退出 debug 模式...
    clino
        6
    clino  
       2014-11-20 14:38:58 +08:00
    这不返回undefined会返回什么呢?

    console.log()
    undefined
    Jaylee
        7
    Jaylee  
       2014-11-20 14:44:05 +08:00
    @learnshare 任何一个都可以吧, console = null; 就可以

    console.log的返回值就是undefined
    typcn
        8
    typcn  
       2014-11-20 14:48:00 +08:00   ❤️ 1
    写一个扩展,在页面加载完成前运行脚本。var xxx = console

    然后通过chrome的api把这个xxx导入到页面里
    learnshare
        9
    learnshare  
       2014-11-20 15:04:36 +08:00
    @Jaylee 主要是这个办法影响了其他使用该功能的 JS,完全是不明智的做法
    livelazily
        10
    livelazily  
       2014-11-20 19:16:43 +08:00 via Android   ❤️ 1
    创建一个 iframe 对象,iframe.contentWindow.console 就是完整的每被覆盖的 console
    66beta
        11
    66beta  
    OP
       2014-11-20 21:52:55 +08:00
    @FrankFang128
    是console.log('xxx');返回undefined,这样就不方便在js里面在console里显示json了~
    spance
        12
    spance  
       2014-11-20 22:45:52 +08:00   ❤️ 1
    delete console.log;
    // chrome.
    console.log(XXXX);
    Mutoo
        13
    Mutoo  
       2014-11-20 22:52:31 +08:00
    >> console.log(JSON.stringify({a:1,b:2}, null, 2));
    {
    "a": 1,
    "b": 2
    }
    << undefined
    FrankFang128
        14
    FrankFang128  
       2014-11-21 01:07:34 +08:00 via Android   ❤️ 1
    估计某个库写了
    console = ...
    那样的话就没救了。

    你可以在HTML head第一行写 _console = console
    idgnarn
        15
    idgnarn  
       2014-11-21 06:10:23 +08:00 via iPhone   ❤️ 1
    debug为什么不用断点?
    livelazily
        16
    livelazily  
       2014-11-21 07:54:54 +08:00
    @66beta console.log 这个函数本来就没有返回值的啊...你到底想要获取什么东西?
    66beta
        17
    66beta  
    OP
       2014-11-21 09:22:44 +08:00
    @livelazily console.log('abc'); 应该显示abc,但是没显示~只返回了undefined
    66beta
        18
    66beta  
    OP
       2014-11-21 09:25:10 +08:00
    @FrankFang128 应该就是这个情况,好恨啊,因为是个大项目,要去header里加一句着实麻烦
    @idgnarn 看来要走上高大洋的debug之路了,alert和console.log该抛弃了
    livelazily
        19
    livelazily  
       2014-11-21 09:30:44 +08:00   ❤️ 1
    @66beta 显示和返回值是两个东西... 如果是没有显示的话,应该是 console.log 被人覆盖了,按照我的方法就可以从别的 iframe windos 里拿一个回来; 如果是要返回值, console.log 函数是没有返回值的
    66beta
        20
    66beta  
    OP
       2014-11-21 09:33:00 +08:00
    @livelazily 谢,其实我就是想偷懒,在console被覆盖的情况下,最简单的方式可以重新用,其实就几个小json,console.log足够了~
    justplaymore
        21
    justplaymore  
       2014-11-21 09:46:54 +08:00   ❤️ 1
    console.log本来就是没有返回值的,所以默认是undefined
    lz如果遇到的是console.log没有输出值,那用typeof来检查一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2874 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 145ms · UTC 13:48 · PVG 21:48 · LAX 06:48 · JFK 09:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.