关闭函数范围内的console.log

Ran*_*lue 1 javascript

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

我可以_debug_为每个模块设置一个变量,true或者false写日志消息,如

if(_debug_) {
   console.log('The is a debug message.');
}
Run Code Online (Sandbox Code Playgroud)

我发现这种方法有点麻烦.我可以做得更好吗?

Mat*_*all 5

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

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

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

    return konsol;
}
Run Code Online (Sandbox Code Playgroud)

然后,在模块的开头:

var console = _debug_ ? window.console || noopConsole();
Run Code Online (Sandbox Code Playgroud)

而已.