window.onload = stuff和window.onload = stuff()之间有区别吗?

时间:2013-12-22 12:26:17

标签: javascript

我最熟悉Python,有点用C,当我在JS中看到这种语法时,我真的很困惑

function begin () {
    console.log("done did it");
}

window.onload = begin(); // the same output as
window.onload = begin;   // this one

在Python中,一个是传递函数的返回值,另一个是函数的指针。 JS对这两个语句有什么语义?

2 个答案:

答案 0 :(得分:10)

是的,这有很大的不同。

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

window.onload = stuff;stuff函数分配给属性onload。当load事件发生时,浏览器将调用该函数。功能是对象。当您通过名称​​引用它们而不调用它们时,您指的是该对象。这类似于你所说的“函数指针”。

答案 1 :(得分:0)

正确的方法是:

window.onload = xxxx;

xxx必须是一个函数。

第一个:

var fn = function() {
    alert("abc");
}

window.onload = fn;

另一个:

var fn = function() {
    var abc = "abc";
    return function () {
        alert(abc);
    }
}
window.onload = fn();