Как отличить строки от целых в консоли firebug

Мне нужно отличить "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 (или аналогичного) Console API

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


person Valentin Nemcev    schedule 27.11.2011    source источник


Ответы (3)


Вы можете попробовать использовать 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"
person wsanville    schedule 27.11.2011

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

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

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

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

person Suraj Chandran    schedule 27.11.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);
    }
}
person Larry Cinnabar    schedule 27.11.2011