根据我收集的内容,前者将函数return语句的实际值分配给onload属性,而后者分配实际函数,并在窗口加载后运行。但我仍然不确定。感谢任何可以详细说明的人。
答案 0 :(得分:11)
window.onload = init();
在init函数执行时将onload事件分配给返回。 init
将立即执行 ,(例如,现在,不是,当窗口加载完毕时),结果将被分配到window.onload
。您不太可能想要这个,但以下内容是有效的:
function init() {
var world = "World!";
return function () {
alert("Hello " + world);
};
}
window.onload = init();
window.onload = init;
将onload事件分配给函数init。当onload事件触发时,将运行init函数。
function init() {
var world = "World!";
alert("Hello " + world);
}
window.onload = init;
答案 1 :(得分:4)
window.onload = foo;
将 foo 的值分配给window对象的onload属性。
window.onload = foo();
将通过调用 foo()返回的值赋给window对象的onload属性。该值是否来自return语句取决于 foo ,但它返回一个函数(需要一个return语句)是有意义的。
当发生加载事件时,如果 window.onload 的值是函数引用,则窗口的事件处理程序将调用它。
答案 2 :(得分:1)
好的答案,还有一件事要补充:
浏览器运行时忽略设置为DOM事件(如window.onload)的非对象(string, number, true, false, undefined, null, NaN
)值。因此,如果您撰写window.onload
= 10或任何上述价值类型(包括混合string
),该活动将保持null
。
有趣的是,事件处理程序将获取任何对象类型值,即使window.onload = new Date
是一个非常有效的代码,它会在您记录window.onload
时提示当前日期。 :)但确保window.load
事件触发时不会发生任何事情。
因此,总是为JavaScript中的任何事件分配一个函数。