[英]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"])
,但它们太笨拙而且突兀,无处不在。
我也试过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 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.