为什么使用函数调用,但window.onload = fn;使用处理函数?

时间:2012-04-01 20:09:02

标签: javascript

我已经阅读了技术差异,例如哪个选项等待加载适当的元素,但在大多数情况下,我理解它们都有类似的用途。

我想知道在使用时需要调用函数的原理(比如,initialize();),但是如果编写window.onload = myFunction则只使用函数名。 (MDN将其称为处理函数)。在这里,我指的是缺少括号的区别。

这两种方法都有优势吗?技术原因?

2 个答案:

答案 0 :(得分:2)

onload属性包含要执行的Javascript代码字符串 它不需要是函数调用;它可以是任意陈述。

onload属性只包含一个函数。

答案 1 :(得分:2)

这是HTML标记与Javascript使用的文档对象模型之间的区别。当你跑:

window.onload = fn;

即将属性“onload”设置为该函数对象,即处理该事件。如果另一方面,你写道:

window.onload = fn();

会立即执行fn,并将onload属性设置为函数返回的任何值(如果函数fn返回另一个函数,也可以工作)。