I'm creating an application with Google Closure Library and its Compiler. To debug values I use console.log()
. Compiling this will throw the following exception JSC_UNDEFINED_VARIABLE. variable console is undeclared at ...
. To solve this error, I just had to use window.console.log()
instead.
I also want to measure the time that a function takes. Firebug has two nice functions console.time(name)
and console.timeEnd(name)
to do that very easily. Unfortunately the Closure Compiler does not support these functions throwing the following warning JSC_INEXISTENT_PROPERTY. Property time never defined on Window.prototype.console at ...
. Unfortunately you cannot solve this warning with prepending window
.
I also had a look at the library, but goog.debug.Console has not the function that I need.
Another solution I have used before was something like the following
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);
This is a little bit too much code, if you use it very often, and the version with the two functions would be great:
window.console.time("timeTaken");
// do something
window.console.timeEnd("timeTaken");
This prints out the MS between start and end. But as mentioned above, this doesn't work with the closure compiler. Does anyone have a solution for this, how I can use these two functions window.console.time()
and window.console.timeEnd()
? Or maybe another solution that goog.closure provides, but I haven't found?
You just need to added them to the externs you are using.