console.log启用验证之间的区别

时间:2011-10-03 21:29:32

标签: javascript jquery

我通过

看到jquery-ui-1.8.11.js验证console.log功能
if (this.debug)
   console.log()

我还看到人们定义了一个匿名函数,对于没有像IE7这样的控制台日志记录的浏览器来说,这是一个无操作。

if(typeof console === "undefined") {
    console = { log: function() { } };
}

是否存在技术差异或功能相同?

3 个答案:

答案 0 :(得分:3)

在您给出的第一个示例中,this.debug将是对jQueryUI代码中debug变量的引用。此调试变量将在其他位置设置,可能通过检查是否已定义console,还可能使用其他设置。

在任何情况下,第一个例子都是特定于应用程序的;如果要进行通用检查以查看控制台是否可用,则需要使用第二种技术。您不必根据示例定义空的console对象,但这样做意味着每次要调用{{{}时都不必执行if()条件1}}。

说完所有这些之后,我会强烈建议你避免将任何代码放入生产中,其中包含对console.log()的调用。在处理代码时,控制台应仅用于调试目的。在最终版本中它不应该是必要的,并且这样做可能表明您的代码不稳定或者您不相信它,如果您要发布实时使用的代码,这两者都不是一个好兆头。

(jQueryUI等库是此规则的一个例外,因为它们需要为开发人员提供在使用库编写代码时进行调试的功能)

答案 1 :(得分:2)

这两个人都做了别的事情。除非设置了标志,否则第一个代码会禁止记录消息。开发jQuery UI的人在处理它时需要记录,并将其打开。但是使用该库的人不希望他们的控制台被来自库的日志消息所混乱,因此默认情况下它是关闭的。它允许你关闭日志记录,即使浏览器支持它 - IE7上的常规用户不会得到脚本错误(可能是预期的)副作用。

第二个代码定义了一个虚拟的console.log(),因此您可以调用该方法而不检查它是否存在于任何地方。它不会禁止在支持它的浏览器上进行日志记录。

答案 2 :(得分:-1)

两者中的第二个是独立的,不依赖于jQuery。在我看来,这使它更好。

相关问题