Как отличить строки от целых в консоли Firebug - PullRequest
3 голосов
/ 27 ноября 2011

Мне нужно отличить "0" от 0 в Firebug console.log на выходе.

Если вы введете console.log("0") в консоль Firebug, вы получите 0, так же, как если бы вы набрали console.log(0), но мне нужно, чтобы оно было "0".

Другими словами, ожидаемый вывод:

console.log("0")
> "0"
console.log(0)
> 0

Фактический

console.log("0")
> 0
console.log(0)
> 0

Как лучше всего решить эту проблему?

Я нашел некоторые обходные пути, такие как console.log("%o", "0") или console.log(["0"]), но они слишком неуклюжи и навязчивы, чтобы использовать их повсюду.

Я также безуспешно пробовал debug и info.

Кстати, консоль Chrome все делает правильно, но я еще не готов перейти на Chrome.

Я думаю о том, чтобы написать какую-нибудь обертку вокруг консольного объекта. Я не уверен, как это сделать правильно, но я попробую, если нет другого решения.


Итак, единственное решение, по-видимому, заключается в том, что вам нужно создать какую-нибудь обертку, которая выглядит следующим образом (основываясь на ответе @ wsanville):

var log_orig = console.log;
// No need to check for type, just use %o for everything
// Also, it gets messier for multiple arguments
console.log = function(s) { log_orig('%o', s); }

Но тогда возникает проблема с номерами строк, как описано в Как получить доступ к номерам строк при переносе Firebug (или аналогичных) Консоли api

Полагаю, мне следует подать ошибку Firebug или что-то еще, потому что в некоторых ситуациях это может быть очень важно.

Ответы [ 3 ]

3 голосов
/ 27 ноября 2011

Вы можете попробовать использовать console.log(new String('0')), чтобы отличить два случая.

Вы также можете просто добавить console.log и инкапсулировать любое решение, которое вам больше нравится, например так:

var log_orig = console.log;
console.log = function(s)
{
    if (s === '0')
        log_orig('%o', s);
    else
        log_orig(s);
}

console.log('0'); //results in "0"
1 голос
/ 27 ноября 2011

console.log(0) покажет 0 но темно-синего цвета console.log('0') покажет 0 в черном цвете

Также вы можете переопределить функцию console.log:

var _log = console.log;
console.log = function(x) {
    if ( Object.prototype.toString.call(x).indexOf('String') != -1 ) {
        return _log("'"+x+"'");
    }  else {
        return _log(x);
    }
}
1 голос
/ 27 ноября 2011

Вы можете использовать:

console.log("Variable x type is " + typeof(x))

Унарный оператор typeof определяет тип переменной.

Возвращаемые значения: логическое, число, объект, строкаили не определено.

...