我在Javascript中有一个newby问题。如果我在调用以下MyInit函数之前(在简单的html页面中)调用console.log(something),则会出现异常,因为未定义console。没关系。但是我看不到MyInit函数如何使它起作用:看来它正在将log函数定义为什么都不做的空函数。从我提供的定义到写入控制台的实际控制台日志功能如何得到它?
function MyInit()
{
if (!window.console) console = { log: function () { } };
}
...
<!-- later -->
console.log("OnMouseOver occurred.");
分解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
这将允许console
并被console.log
引用而不会引发任何错误。console.log("OnMouseOver occurred.");
在window.console
默认情况下不支持的浏览器上将完全不执行任何操作。
为了更清楚地说明这一点,我创建了一个JSFiddle演示程序,该演示程序反转了此方法。在本演示中,我们发现,如果window.console
是支持的,如果它是我们设置覆盖console.log
,而不是等于这个空函数。运行此命令时,您会看到我们的console.log("Hello, world!")
调用未将任何内容记录到控制台,但同样不会引发任何有关未定义的错误。
简而言之,MyInit()
不会使其起作用,它只会创建一个console.log
不执行任何操作的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句