在 Firefox/Chrome/others 中,typeof console.log 报告“功能”。在 IE9 中,(假设开发者控制台已打开,因此定义了 window.console 属性),如果您在开发者控制台中显示变量 console.log,则显示
function(...) {
[native code]
}
但它会将 typeof console.log 报告为“对象”。该标准规定,功能应该被报告为“功能”。有人知道为什么会这样吗?
在 Firefox/Chrome/others 中,typeof console.log 报告“功能”。在 IE9 中,(假设开发者控制台已打开,因此定义了 window.console 属性),如果您在开发者控制台中显示变量 console.log,则显示
function(...) {
[native code]
}
但它会将 typeof console.log 报告为“对象”。该标准规定,功能应该被报告为“功能”。有人知道为什么会这样吗?
这似乎是 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;
}