问题标签 [self-invoking-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2930 浏览

javascript - for循环中的自调用函数

这是来自 https://github.com/Khan/khan-exercises/blob/master/khan-exercise.js的代码

奇怪的事情:我们看到的是自调用函数,而不是通常的 for 循环代码块!(在其他自调用函数内部)为什么会这样?这个函数将如何运行?

0 投票
3 回答
342 浏览

javascript - 这三种模块模式有什么区别?

有什么区别(尤其是第三种变体)?它们都一样吗?

0 投票
2 回答
81 浏览

javascript - 2 以下自调用函数不起作用

这段代码有什么问题?

http://jsfiddle.net/VvaCX/

0 投票
1 回答
654 浏览

javascript - 将 JavaScript 模块添加到全局范围的跨平台方法是什么?

我正在查看store.js的源代码,特别是它如何将自身添加到全局范围:

我理解最后一个陈述this.store = store,但其他的呢?moduledefine功能是什么?还不能this.store = store在所有浏览器上工作?

更一般地说,将模块添加到全局范围的正确跨浏览器方式是什么?

0 投票
4 回答
8240 浏览

javascript - 通过对象内的 setTimeout 自调用函数

我想通过以下方式在同一个对象方法中调用 js 对象的方法setTimeout

但是,我收到此错误消息:

我在这里想念什么?我将如何更改 setTimeout 函数中的字符串?

谢谢你的帮助!

编辑:我在 mac 上使用 firefox。

0 投票
2 回答
142 浏览

javascript - 如何调用自调用函数

我试图以这种方式调用自调用函数:

它只工作一次。window.resize 没有回应 谢谢

0 投票
3 回答
286 浏览

javascript - 为什么 Ajax 不使用自调用?

自调用closure函数的奇怪语法意味着您本质上是在调用函数本身,因此将其设为self-invoking. 这里有一些代码证明了这一点:


...上面的第二个函数没有执行,因为它缺少结束括号,并且innerHTML变成了整个函数本身。那么,为什么您的标准 Ajax 语法不以同样的方式使用自调用呢?似乎这些属性以独特的方式处理XMLHttpRequestonreadystatechange这是一个例子:


注意没有结束括号...我问这个是因为我想进一步了解 Ajax 语法,以及它到底在做什么。

0 投票
6 回答
6562 浏览

javascript - 命名自调用函数

有没有理由使用命名的自调用函数?

例如:

就我的学习而言,这与匿名自调用函数的作用相同,没有额外的优点(您不能在调用后再次调用它),也没有额外的缺点,因为它不会“污染”全局范围(我认为)。

是否有任何时候命名像上面这样的自调用函数是有意义的?

0 投票
3 回答
371 浏览

javascript - JavaScript 中的自调用函数

我有一个像这样的自调用函数:

typeof f始终是最后一个函数定义中返回的类型。就像如果h是最后一个,那么它是"string",但如果我删除h并拥有g最后一个,那么"number"

有人可以解释为什么吗?

0 投票
2 回答
2092 浏览

javascript - 使用自调用函数进行数组初始化

我正在尝试使用自调用函数初始化一个数组,为了简单起见,假设初始值是从 0 到 4 的数字的平方。new关键字创建新对象,因此可以使用this.x或访问新创建对象的字段this[x]在 IIFE 主体内,跟在new关键字之后。代码是:

现在,您可以访问变量arrlike的相应字段arr[4],并获取16。如果您只使用 like 处理一个对象,那很好arr,但是一旦您尝试将其视为数组,您就会遇到问题。即,您不能reduce对它应用类似的功能:

那是因为arr真的是一个对象,而不是一个数组:

所以这是我的问题:如何在这种方法中避免这种行为?如何让 JavaScript 将这个新创建的对象解释为数组?