这里有一个在文档加载时注册函数的例子(大部分摘自 JavaScript:权威指南):
"use strict";
//run function f when document is loaded
function onLoad(f) {
if (onLoad.loaded) // If already loaded
window.setTimeout(f, 0);
else if (window.addEventListener)
window.addEventListener("load", f, false);
}
onLoad.loaded = false;
onLoad(function() { onLoad.loaded = true; });
onLoad(myfunc);
function myfunc() {
console.log("Hello, world!");
}
我对
onLoad(function() { onLoad.loaded = true; });
这行感到困惑。我可以说这是自调用,但再次使用函数名称让我感到困惑。为什么需要它?我发现如果我只做(function() { onLoad.loaded = true; });
那么输出也是一样的。
最后,我可以通过使用获得相同的输出:
function myfunc() {
console.log("Hello, world!");
}
window.onload = (function() {window.setTimeout(myfunc, 0);});
我的代码在哪些方面更好/更差?
我对
这行感到困惑。我可以说这是自调用,但再次使用函数名称让我感到困惑。onLoad(function() { onLoad.loaded = true; });
这不是自我调用。
这是对函数
onLoad
(先前定义的)的调用,带有一个参数(这是一个函数表达式)。
最后,我可以通过使用获得相同的输出......我的代码如何更好/更差?
您的代码将: