繁体   English   中英

如何在firebug控制台中区分字符串和int

[英]How to distinguish strings from ints in firebug console

我需要在Firebug console.log输出中区分"0"0

如果你在Firebug控制台中键入console.log("0") ,你将得到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"]) ,但它们太笨拙而且突兀,无处不在。

我也试过debuginfo没有成功。

顺便说一句,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 bug或者其他东西,因为在某些情况下这可能非常关键。

您可以尝试使用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"

你可以使用:

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

一元运算符的类型确定变量的类型。

返回值为boolean,number,object,string或undefined。

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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM