假设你有以下内容:
function doStuff() {
//code
}
两个陈述之间有什么区别?
window.onload = doStuff;
window.onload = doStuff();
两个语句都立即调用了该方法,但如果我使用了第一个语句,我可以将onload视为指向“doStuff”的函数指针,并使用以下方法再次调用该方法:
onload();
这是唯一的区别,一般来说,这是事件处理程序的所有保证行为吗?
答案 0 :(得分:3)
window.onload = doStuff();
当iterpreter到达那里时,它会立即触发。
window.onload = doStuff;
它是对未来被调用的函数的引用。
问题:
我应该何时使用window.onload = doStuff();
答案:
当你需要创建闭包时:
示例:
window.onload = doStuff();
哪里
function doStuff()
{
var i = 0;
return function ()
{
return i++;
};
}
答案 1 :(得分:2)
window.onload = doStuff();
直接执行doStuff()并将函数的返回值赋给window.onload
window.onload = doStuff;
这将实际功能分配给window.onload。它分配它而不执行它。调用load事件时将执行doStuff。
答案 2 :(得分:1)
你实际上有点理解。
window.onload = doStuff;
表示当触发onload事件时,将调用doStuff函数。
window.onload = doStuff();
表示当达到该行代码时(触发onload事件之前),执行doStuff并将其返回结果分配给onload处理程序。
除非doStuff
返回触发onload事件时要执行的函数,否则你可能想要第一个。