关闭函数范围内的console.log

时间:2011-10-30 14:45:34

标签: javascript

我在模块中编写代码,每个模块都可以单独调试。我想打开或关闭模块级别的console.log消息,专注于我正在处理的模块。

我可以为每个模块设置_debug_变量truefalse,并写入日志消息,如

if(_debug_) {
   console.log('The is a debug message.');
}

我发现这种方法有点麻烦。我能做得更好吗?

2 个答案:

答案 0 :(得分:5)

如果要禁用调试语句,则可以在进入模块范围时劫持console对象。这是生成替代“控制台”对象的简单方法:

function noopConsole()
{
    var konsol = {};
    function noop(){}

    for (var k in window.console)
    {
        konsol[k] = noop;
    }

    return konsol;
}

然后,在模块的开头:

var console = _debug_ ? window.console || noopConsole();

就是这样。

答案 1 :(得分:2)

您可以在要停用日志记录的模块中重新定义console

没有记录的模块:

var console = {log: function(){}}

这假设每个模块都在自己的范围内。