2013-03-19 55 views
4

在Firefox/Chrome /其他中,typeof console.log報告「功能」。在IE9中,(假設開發者控制檯是開放的,從而限定window.console屬性),如果你表現出變量的console.log在開發者控制檯,顯示有人知道爲什麼IE9 typeof console.log報告「object」,其他報告「function」?

function(...) { 
[native code] 
} 

但它報告的typeof的console.log爲「目的'。該標準說功能應該被報告爲'功能'。有人知道爲什麼發生這種情況?

回答

3

它似乎是IE中的一個bug,因爲許多(或所有)應該是函數的控制檯元素看起來都是對象。

如果你想調用函數的方法是不存在的,那麼你可能想引用這篇文章: http://whattheheadsaid.com/2011/04/internet-explorer-9s-problematic-console-object

否則最簡單的辦法是做:

typeof(console.log) !== 'undefined' 

這是不是最漂亮的解決方案,因爲它實際上是一個錯誤,儘管它們的驅動力正好相反,但IE仍然不符合標準,但console.log實際上不應該只是一個對象或函數,因此它應該是安全的。否則,你可以做更復雜的事情,如:

switch (typeof(console.log)) { 
    case 'object': 
    case 'function': 
     // Should be a valid console.log object, do something with it 
    break; 
} 
+0

感謝您的參考。我最終做了同樣的事情,只是檢查日誌!=未定義。 – 2013-03-19 17:27:43