以下是在文档加载上注册函数的示例(大部分内容取自 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);});
我的代码如何更好/更差?
提前致谢!
答案 0 :(得分:2)
我对行
onLoad(function() { onLoad.loaded = true; });
感到困惑。我可以说这是自我调用,但是再次使用函数名称会让我感到困惑。
这不是自我调用。
使用一个参数(函数表达式)调用函数onLoad
(之前定义)。
最后,我可以通过使用...获得相同的输出...我的代码如何更好/更差?
您的代码将: