Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript console.log()未在所有浏览器上工作_Javascript_Logging_Browser_Console.log - Fatal编程技术网

Javascript console.log()未在所有浏览器上工作

Javascript console.log()未在所有浏览器上工作,javascript,logging,browser,console.log,Javascript,Logging,Browser,Console.log,我最近遇到了一个奇怪的问题,console.log如果在我的代码中使用,则不会输出任何内容,但直接在控制台中使用或使用window.console.log可以正常工作 window.console.log(console); window.console.log(window.console); console.log("test1"); // (won't work) window.console.log("test2"); 输出: 如果我自己定义console,则在代码之前定义conso

我最近遇到了一个奇怪的问题,
console.log
如果在我的代码中使用,则不会输出任何内容,但直接在控制台中使用或使用
window.console.log
可以正常工作

window.console.log(console);
window.console.log(window.console);
console.log("test1"); // (won't work)
window.console.log("test2");
输出:

如果我自己定义console,则在代码之前定义console:

var console = window.console;
window.console.log(console);
window.console.log(window.console);
console.log("test1");
window.console.log("test2");
输出:


最奇怪的是,如果我在代码之后自己定义控制台

输出:

回答前请注意:

  • 这不是特定于浏览器的问题,因为每个浏览器上的输出都是相同的(我在chrome/firefox/safari/opera上检查过)

  • 它没有被覆盖,因为
    console
    &
    window.console
    的日志返回相同的精确对象(请参见屏幕截图)


  • 这是JavaScript的惊人特性之一。在预执行阶段处理
    var
    指令。所以这个代码:

    function foo() {
        window.console.log(console);
        var console = window.console;
        window.console.log(console);
    }
    
    相当于:

    function foo() {
        var console;
        window.console.log(console); // console is local variable and undefined
        console = window.console;
        window.console.log(console);
    }
    

    我找到了。。在grunt uglify函数(grunt contrib uglify)中,我们使用
    drop\u控制台
    选项进行压缩:

    uglify: {
        options: {
          compress: {
              drop_console: true
          }
        }, 
    // ...
    

    很明显,它会删除
    控制台的任何外观
    ,但奇怪的是,它不会删除
    窗口。控制台

    如果发生这种情况,您可能是做错了什么。我似乎无法复制它,所以您的代码必须覆盖某些内容,或者由于某种原因处于最奇怪的作用域,其中window不是“全局”作用域等。按照@adeneo所说的,如果您在控制台中键入
    this
    ,您会得到什么?什么是
    window.console.log(console.log.toString())
    show?@epascarello it show
    function log(){[native code]}
    您可以发布一个指向完整代码的链接吗?
    uglify: {
        options: {
          compress: {
              drop_console: true
          }
        }, 
    // ...