如何快速方便地禁用我的代码中的所有 console.log 语句?

新手上路,请多包涵

出于测试目的,有什么方法可以关闭我的 JavaScript 代码中的所有 console.log 语句?

原文由 Zack Burt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

在脚本中重新定义 console.log 函数。

 console.log = function() {}

就是这样,没有更多的消息要控制台。

编辑:

扩展 Cide 的想法。一个自定义记录器,您可以使用它来从您的代码中切换登录/关闭。

从我的 Firefox 控制台:

 var logger = function()
 {
 var oldConsoleLog = null;
 var pub = {};

 pub.enableLogger = function enableLogger()
 {
 if(oldConsoleLog == null)
 return;

 window['console']['log'] = oldConsoleLog;
 };

 pub.disableLogger = function disableLogger()
 {
 oldConsoleLog = console.log;
 window['console']['log'] = function() {};
 };

 return pub;
 }();

 $(document).ready(
 function()
 {
 console.log('hello');

 logger.disableLogger();
 console.log('hi', 'hiya');
 console.log('this wont show up in console');

 logger.enableLogger();
 console.log('This will show up!');
 }
 );

如何使用上面的“记录器”?在您的就绪事件中,调用 logger.disableLogger 以便不记录控制台消息。在要将消息记录到控制台的方法中添加对 logger.enableLogger 和 logger.disableLogger 的调用。

原文由 SolutionYogi 发布,翻译遵循 CC BY-SA 3.0 许可协议

下面说的比较透彻:

 var DEBUG = false;
if(!DEBUG){
    if(!window.console) window.console = {};
    var methods = ["log", "debug", "warn", "info"];
    for(var i=0;i<methods.length;i++){
        console[methods[i]] = function(){};
    }
}

这会将控制台中的常用方法清零(如果存在),并且可以毫无错误地调用它们,并且几乎没有性能开销。对于像 IE6 这样没有控制台的浏览器,将创建虚拟方法以防止错误。当然,Firebug 中还有更多的功能,如跟踪、配置文件、时间等。如果您在代码中使用它们,可以将它们添加到列表中。

您还可以检查调试器是否具有这些特殊方法(即 IE),并将它不支持的方法清零:

 if(window.console && !console.dir){
var methods = ["dir", "dirxml", "trace", "profile"]; //etc etc
    for(var i=0;i<methods.length;i++){
        console[methods[i]] = function(){};
    }
}

原文由 mwilcox 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题