2011-11-27 25 views
3

我需要區分"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"]),但它們太笨拙,並且在任何地方都使用它們。

我也試過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); } 

但你行號獲得的問題,如How to access line numbers when wrapping Firebug (or similar) Console api

中描述我想我應該提交一個螢火蟲錯誤或什麼的,因爲這可能是在一些情況下真正的關鍵。

回答

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" 
1

你可以使用:

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

typeof運算元運算符確定變量的類型。

返回值爲布爾值,數字,對象,字符串或未定義。

1

console.log(0)會顯示0但darkblue顏色 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); 
    } 
}