我最熟悉Python,有点用C,当我在JS中看到这种语法时,我真的很困惑
function begin () {
console.log("done did it");
}
window.onload = begin(); // the same output as
window.onload = begin; // this one
在Python中,一个是传递函数的返回值,另一个是函数的指针。 JS对这两个语句有什么语义?
答案 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();