解释这个JavaScript onload函数

解释这个JavaScript onload函数,javascript,javascript-events,Javascript,Javascript Events,下面是一个在文档加载时注册函数的示例(大部分来自JavaScript:Definitive Guide): 我对行onLoad(function(){onLoad.load=true;})感到困惑。我知道这是自调用,但再次使用函数名让我感到困惑。为什么需要它?我发现如果我只执行(function(){onLoad.load=true;})则输出也是相同的 最后,我可以使用以下方法获得相同的输出: function myfunc() { console.log("Hello, world!

下面是一个在文档加载时注册函数的示例(大部分来自JavaScript:Definitive Guide):

我对行
onLoad(function(){onLoad.load=true;})感到困惑。我知道这是自调用,但再次使用函数名让我感到困惑。为什么需要它?我发现如果我只执行
(function(){onLoad.load=true;})则输出也是相同的

最后,我可以使用以下方法获得相同的输出:

function myfunc() {
    console.log("Hello, world!");
}

window.onload = (function() {window.setTimeout(myfunc, 0);});
我的代码如何更好/更差

提前谢谢

我对行
onLoad(function(){onLoad.load=true;})感到困惑。我知道这是自调用,但再次使用函数名让我感到困惑

这不是一个自我调用

它是用一个参数(函数表达式)调用函数
onLoad
(以前定义的)

最后,我可以通过使用…获得相同的输出,我的代码如何更好/更差

您的代码将:

  • 仅支持在加载事件激发时调用的函数。如果尝试分配另一个函数,它将覆盖前一个函数,而不是设置两个函数在事件触发时调用
  • 如果load事件已经触发,则不会立即(或根本不会)调用函数(因此您不能在可以动态添加到页面并正常使用的脚本中使用它)

回答得很好!现在它完全有道理了。:)
function myfunc() {
    console.log("Hello, world!");
}

window.onload = (function() {window.setTimeout(myfunc, 0);});