gpt4 book ai didi

javascript - 我可以命名一个 JavaScript 函数并立即执行吗?

转载 作者:IT王子 更新时间:2023-10-29 02:48:55 24 4
gpt4 key购买 nike

我有很多:

function addEventsAndStuff() {
// bla bla
}
addEventsAndStuff();

function sendStuffToServer() {
// send stuff
// get HTML in response
// replace DOM
// add events:
addEventsAndStuff();
}

重新添加事件是必要的,因为 DOM 已更改,因此之前附加的事件已不存在。由于它们最初也必须附加(duh),因此它们在 DRY 中是一个很好的功能。

这个设置没有任何问题(或者有什么问题?),但我可以稍微平滑一下吗?我想创建 addEventsAndStuff() 函数并立即调用它,所以它看起来不那么业余。

以下都返回一个语法错误:

function addEventsAndStuff() {
alert('oele');
}();

(function addEventsAndStuff() {
alert('oele');
})();

有人要吗?

最佳答案

您在问题中发布的示例没有任何问题。另一种方法可能看起来很奇怪,但是:

var addEventsAndStuff;
(addEventsAndStuff = function(){
// add events, and ... stuff
})();

在 JavaScript 中有两种定义函数的方法。函数声明:

function foo(){ ... }

和一个函数表达式,它是任何定义函数的方式,而不是上述方式:

var foo = function(){};
(function(){})();
var foo = {bar : function(){}};

...等等

可以命名函数表达式,但它们的名称不会传播到包含范围。表示此代码有效:

(function foo(){
foo(); // recursion for some reason
}());

但这不是:

(function foo(){
...
}());
foo(); // foo does not exist

因此,为了命名您的函数并立即调用它,您需要定义一个局部变量,将您的函数作为表达式分配给它,然后调用它。

关于javascript - 我可以命名一个 JavaScript 函数并立即执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6404196/

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