Использование console.time - PullRequest
       43

Использование console.time

4 голосов
/ 20 октября 2011

Я создаю приложение с помощью библиотеки Google Closure и ее компилятора.Для отладки значений я использую console.log().Компиляция этого вызовет следующее исключение JSC_UNDEFINED_VARIABLE. variable console is undeclared at ....Чтобы решить эту ошибку, мне просто нужно было использовать window.console.log().
Я также хочу измерить время, которое занимает функция.Firebug имеет две замечательные функции console.time(name) и console.timeEnd(name), которые очень легко делают это.К сожалению, Closure Compiler не поддерживает эти функции, выдавая следующее предупреждение 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, но я не нашел?

Ответы [ 2 ]

4 голосов
/ 20 октября 2011

Вам просто нужно добавить их к используемым вами внешним файлам.

1 голос
/ 10 ноября 2012

Если вы не хотите / не можете использовать externs, вы можете легко ссылаться на «необъявленные» объекты с помощью свойств на основе строки:

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

Но вы должны быть осторожны, потому что вторая строка может выдать ошибку, если свойство time не существует или не является функцией.

...