我希望在防止控制台不存在时,尽可能地保持我的日志记录语句简短。为此,我想出了以下解决方案:
var _ = {};
if (console) {
_.log = console.debug;
} else {
_.log = function() { }
}
在我看来,这似乎非常优雅,并且在Firefox 3.6中运行良好(包括保留行号,使console.debug
比console.log
更有用)。但是它在Safari 4中不起作用。[更新:或者在Chrome中也不起作用。因此,问题似乎在于Firebug和Webkit控制台之间的差异。]如果我按照上述方法操作:
console.debug('A')
_.log('B');
第一条语句在两个浏览器中都可以正常工作,但第二条在Safari中会生成“TypeError:Type Error”。这只是Firebug和Safari Web Developer工具在实现控制台方面的差异吗?如果是这样,在
当然,我也可以从分配给
_.log
的匿名函数中调用console.debug
,但那样我就会失去我的行号。还有其他想法吗?