【问题标题】:Use of console.time使用控制台时间
【发布时间】:2011-10-20 09:51:11
【问题描述】:

我正在使用 Google Closure Library 及其编译器创建一个应用程序。要调试值,我使用console.log()。编译它会抛出以下异常JSC_UNDEFINED_VARIABLE. variable console is undeclared at ...。为了解决这个错误,我只需要改用window.console.log()
我还想测量一个函数所花费的时间。 Firebug 有两个很好的函数console.time(name)console.timeEnd(name) 可以很容易地做到这一点。不幸的是,闭包编译器不支持这些函数并抛出以下警告JSC_INEXISTENT_PROPERTY. Property time never defined on Window.prototype.console at ...。不幸的是,您无法通过添加 window 来解决此警告。
我还查看了库,但 goog.debug.Console 没有我需要的功能。
我之前使用的另一个解决方案类似于以下

var start = new Date();  
// do something
var end = new Date();

// do some calculation to get the ms for both start and end
var startMS = ....;
var endMS = .....;
// get the difference and print it
var difference = (endMS - startMS) / 1000;
console.log('Time taken for something: ' + difference);

代码有点多,如果你经常使用的话,有两个功能的版本会很棒:

window.console.time("timeTaken");
// do something
window.console.timeEnd("timeTaken");

这会打印出开始和结束之间的 MS。但如上所述,这不适用于闭包编译器。有没有人对此有解决方案,我如何使用这两个功能window.console.time()window.console.timeEnd()?或者 goog.closure 提供的另一种解决方案,但我还没有找到?

【问题讨论】:

    标签: google-closure-compiler google-closure google-closure-library


    【解决方案1】:

    您只需将它们添加到您正在使用的外部。

    【讨论】:

    • 感谢您的建议。在尝试声明 firebug 扩展并遇到很多错误时(Fi​​rebug 使用 CONST 关键字,这在 Closure 编译器中是不允许的),我在编译器的目录中找到了 webkit_console.js,其中声明了两个函数。
    • 是的,“const”不是标准的一部分,因此不受支持。为此,我们必须等待 EcmaScript 6。就个人而言,我等不及了。 "/** @const */" 几乎不会被使用。
    • 我们确实添加了一个“--accept_const_keyword”选项以使人们的操作更简单,这只是将“const”重写为编译器其余部分的“var”。
    • 我对 Closure 不是很熟悉 - 你能举一个 console 的 extern 声明的例子吗?
    • 最低限度:var console;控制台时间;控制台.timeEnd;您可以使用现有的外部对象来大致了解事物:code.google.com/p/closure-compiler/source/browse/trunk/externs/…
    【解决方案2】:

    如果您不想/不能使用外部,您可以轻松地使用基于字符串的属性引用“未声明”的对象:

    window['console']['log']('Hello Console!');
    window['console']['time']('timeTaken');
    ...
    

    但是你必须小心,因为如果time 属性不存在或者它不是一个函数,第二行可能会抛出一个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-25
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      相关资源
      最近更新 更多