window.onload = someFunctionName vs window.onload = someFunctionName()

时间:2013-12-25 10:47:43

标签: javascript

所以问题是

之间有什么区别

window.onload = someFunctionNamewindow.onload = someFunctionName()我应该使用这个括号吗?

4 个答案:

答案 0 :(得分:2)

这是一个很好的规范: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onload

有几种方法可以设置它: 1. Javascript,需要将其设置为函数。 2.通过HTML标记将其设置为字符串值。

这里的例子都是有效的方法。我建议Javascript直接传递一个函数引用: http://www.w3schools.com/jsref/event_onload.asp

答案 1 :(得分:2)

window.onload = someFunctionName(); 调用 someFunctionName函数,将其返回值分配给onload属性。

window.onload = someFunctionName;someFunctionName函数分配给属性onload。当load事件发生时,浏览器将调用该函数。功能是对象。当你通过名字引用它们而不用调用它们时,你就是指对象。

示例:

window.onload = test();

function test() {
    alert("outer");
    return function(){
    alert("inner");
    }
}

这会发出两次警报,因为test()被调用它将警告外部并返回内部函数加载并上载它将警告内部。

,而

window.onload = test;

function test() {
    alert("outer");
    return function(){
    alert("inner");
    }
}

上面的代码只会警告外部因为内部函数返回但从未被调用。

Here is fiddle

答案 2 :(得分:1)

window.onload = someFunction; - 为onload事件指定someFunction

window.onload = someFunction(); - 为onload事件指定someFunction的结果。

答案 3 :(得分:0)

您需要注意in Javascript a function can return another function after execution。出于这个原因,因为您没有显示任何代码,所以这两个示例都可能是正确的。

但两者之间存在差异:

  • window.onload = someFunctionNamesomeFunctionName本身指定为onload处理程序;

  • window.onload = someFunctionName()不会分配函数someFunctionName本身,而是分配执行someFunctionName函数的返回结果。假设someFunctionName本身返回一个函数,那么它可能是正确的,否则你会得到意想不到的结果。

Javascript函数是对象。使用括号时,您正在调用该函数。当您使用没有括号的函数时,您指的是函数对象(即函数本身)。

所以这取决于你在做什么......