首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以命名一个JavaScript函数并立即执行它吗?

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

Stack Overflow用户
提问于 2011-06-20 02:07:04
回答 5查看 84.5K关注 0票数 100

我有很多这样的想法:

代码语言:javascript
复制
function addEventsAndStuff() {
  // bla bla
}
addEventsAndStuff();

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

重新添加事件是必要的,因为DOM已更改,因此以前附加的事件已消失。由于它们最初也必须连接(duh),所以它们在一个很好的功能中是干燥的。

这个设置没有什么问题(或者有问题吗?),但是我可以稍微平滑一点吗?我想创建addEventsAndStuff()函数并立即调用它,这样它看起来就不那么新手了。

下面这两个命令都以语法错误响应:

代码语言:javascript
复制
function addEventsAndStuff() {
  alert('oele');
}();

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

有谁愿意接受吗?

EN

回答 5

Stack Overflow用户

发布于 2014-05-09 00:27:59

有一个很好的简写方法(除了函数的赋值外,不需要声明任何变量):

代码语言:javascript
复制
var func = (function f(a) { console.log(a); return f; })('Blammo')
票数 20
EN

Stack Overflow用户

发布于 2011-06-20 02:11:58

您可能希望创建一个辅助函数,如下所示:

代码语言:javascript
复制
function defineAndRun(name, func) {
    window[name] = func;
    func();
}

defineAndRun('addEventsAndStuff', function() {
    alert('oele');
});
票数 5
EN

Stack Overflow用户

发布于 2018-10-23 19:56:26

使用ES6甚至更简单:

代码语言:javascript
复制
var result = ((a, b) => `${a} ${b}`)('Hello','World')
// result = "Hello World"
var result2 = (a => a*2)(5)
// result2 = 10
var result3 = (concat_two = (a, b) => `${a} ${b}`)('Hello','World')
// result3 = "Hello World"
concat_two("My name", "is Foo")
// "My name is Foo"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6404196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档