在Javascript中定义控制台

时间:2014-01-29 14:14:07

标签: javascript console

我在Javascript中有一个新问题。如果在调用以下MyInit函数之前调用console.log(某些东西)(在一个简单的html页面中),我会得到一个异常,因为没有定义控制台。没关系。但是我没有看到MyInit函数做了什么使其工作:看起来它将日志函数定义为空的东西,什么都不做。它是如何从我提供的定义到写入控制台的实际控制台日志功能的?

function MyInit()
{
  if (!window.console) console = { log: function () { } };
}
...

<!-- later -->

console.log("OnMouseOver occurred.");

1 个答案:

答案 0 :(得分:1)

分解MyInit()

if (!window.console)           // If `window` does not have a `console` property
    console = {                // Declare `console` object
        log:                   // Add `log` key
            function () { } }; // ...which is a function which does nothing

这将允许引用consoleconsole.log而不会抛出任何错误。 console.log("OnMouseOver occurred.");在默认情况下不支持window.console的浏览器上不做任何操作。

为了更清楚地显示这一点,我创建了一个JSFiddle demo来反转此方法。在此演示中,我们检测是否支持window.console ,如果是,我们将覆盖console.log设置为等于此空函数。当你运行它时,你会看到我们的console.log("Hello, world!")调用没有记录任何东西到控制台,但它同样不会抛出任何未定义的错误。

简而言之,MyInit()不会使其正常工作,它只是创建一个console.log函数,它不会做任何事情。