gpt4 book ai didi

javascript - 将函数设置为匿名的区别

转载 作者:行者123 更新时间:2023-11-29 16:13:19 24 4
gpt4 key购买 nike

我知道下面两种方法有很大的不同:

a.onclick = function() {alert("Hi");};

a.onclick = (function() {alert("Hi");};)();

为什么人们使用第二种方法?第二个应该在页面加载时触发 alert() 但没有?

为什么在 Difference between onbeforeunload and onunload第一个人使用匿名而第二个人使用正确的吗?

最佳答案

有时匿名的、自执行的函数对事件处理程序很有用。您的场景不是其中之一。

这是一个例子。在这个例子中,我使用一个范围变量来跟踪处理程序被调用的次数,但是为了防止该变量泄漏到外部范围,它必须在一个函数中;但为了在事件处理程序调用中保留该值,它不能在处理程序本身中初始化——它需要绑定(bind)在一个闭包中。

a.onclick = (function () {
var counter = 0;
return function (e) {
++counter;
alert("Hi! This handler has been invoked " + counter + " times!");
};
}());

因此自执行函数本身返回一个适合作为 onclick 处理程序的函数。但是,它也有自己的静态状态,即使在两次调用之间也需要对其进行跟踪。

这只是一个例子,说明为什么使用自执行函数可能有用,该函数返回事件处理程序或其他回调槽的函数。

关于javascript - 将函数设置为匿名的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com