【问题标题】:Anybody know why IE9 typeof console.log reports "object", others report "function"?任何人都知道为什么 IE9 typeof console.log 报告“对象”,其他人报告“功能”?
【发布时间】:2013-03-08 11:44:35
【问题描述】:

在 Firefox/Chrome/others 中,typeof console.log 报告“功能”。在IE9中,(假设开发者控制台是打开的,因此定义了window.console属性),如果你在开发者控制台中显示变量console.log,显示

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

但它会将 typeof console.log 报告为“对象”。该标准规定,功能应该被报告为“功能”。有人知道为什么会这样吗?

【问题讨论】:

    标签: internet-explorer-9 ie-developer-tools console.log


    【解决方案1】:

    这似乎是 IE 中的一个错误,因为许多(或所有)应该是函数的控制台元素似乎是对象。

    如果您尝试调用不存在的函数方法,那么您可能需要参考这篇文章: 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;
    }
    

    【讨论】:

    • 感谢您的参考。我最终做了你建议的同样的事情,只是检查 log != undefined。
    猜你喜欢
    • 2013-03-25
    • 1970-01-01
    • 2012-01-05
    • 2012-08-18
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2018-01-30
    • 2012-08-25
    相关资源
    最近更新 更多