What is the difference between window.onload = init(); and window.onload = init;
根据我收集到的信息,前者将函数return语句的实际值分配给onload属性,而后者则分配实际函数,并且将在窗口加载后运行。但是我仍然不感谢任何可以详细说明的人。
1 | window.onload = init(); |
将onload事件分配给init函数执行时返回的任何内容。
1 2 3 4 5 6 7 8 | function init() { var world ="World!"; return function () { alert("Hello" + world); }; } window.onload = init(); |
1 | window.onload = init; |
将onload事件分配给函数init。当onload事件触发时,将运行init函数。
1 2 3 4 5 6 | function init() { var world ="World!"; alert("Hello" + world); } window.onload = init; |
1 | window.onload = foo; |
将foo的值分配给窗口对象的onload属性。
1 | window.onload = foo(); |
将通过调用foo()返回的值分配给窗口对象的onload属性。该值是否来自return语句取决于foo,但是对于它来说,返回一个函数(需要return语句)是有意义的。
发生load事件时,如果window.onload的值是函数引用,则window的事件处理程序将对其进行调用。
好的答案,还有一件事要补充:
浏览器运行时忽略设置为DOM事件(例如window.onload)的非对象(
更有趣的是,事件处理程序将获取任何对象类型值,即使
因此,始终将函数分配给JavaScript中的任何事件。