4

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

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

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

4

1 回答 1

3

这似乎是 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;
}
于 2013-03-19T17:05:45.457 回答