javascript - 将事件处理程序分配给带括号和不带括号的方法之间的区别

标签 javascript function event-handling

假设您有以下内容:

函数 doStuff() { //代码 }

这两个语句有什么区别?

window.onload = doStuff;

window.onload = doStuff();

两个语句都立即调用了该方法,但如果我使用第一个语句,我可以将 onload 视为指向“doStuff”的函数指针,然后再次调用该方法使用:

onload();

这是唯一的区别吗?总的来说,这是事件处理程序的所有保证行为吗?

最佳答案

window.onload = doStuff();

这将在 iterpreter 到达那里时立即触发。

window.onload = doStuff;

它是对 future 要调用的函数的引用。

问题:

什么时候应该使用 window.onload = doStuff();

回答:

当你需要创建闭包时:

示例:

window.onload = doStuff();

在哪里

function doStuff()
    {
        var i = 0;
        return function ()
        {
            return i++;
        };
    }

关于javascript - 将事件处理程序分配给带括号和不带括号的方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20854084/

相关文章:

javascript - HTML5 `success` 标记的 `ready` 和 `<audio>` 事件?

javascript - 确定动态填充的 HTML 表格的高度

javascript - 在 javascript 中创建登录 - 数组比较

c++ - 无法使用内联功能的时间

c# - 将职责委派给 WinForm 控件——控件是否应该了解彼此的操作?

c# - 使按钮单击的事件处理程序启动一个名为 MainPage_Loaded 的新事件

javascript - 动态地将类添加到数组中来自 *ngFor 的内容

javascript - 在 JavaScript 中编码 Base64,用 GET 发送,在 PHP 中解码

javascript - react-native AES加密匹配Java解密算法

javascript - 为什么我不能以及如何将函数的返回值分配给对象属性?