问题标签 [iife]

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 投票
0 回答
241 浏览

javascript - 带有 IIFE 的 Javascript MVC 和潜在的依赖问题

我正在尝试创建自己的简单且小型(观察者)MVC 示例,并尝试使用 IIFE 为我的模型和控制器创建隐私。由于控制器在调用时需要模型对象,因此我不相信这种方法。

我创建了一个工作小提琴,展示了我正在尝试做的事情,但是在这种情况下首先调用的模型依赖于模型。我想将控制器和模型放在不同的文件中以便于管理,但由于这种依赖性,我不知道我是否可以这样做。

有没有办法解决这个问题或对这类事情有更好的解决方案?

工作示例

(代码摘录)

0 投票
1 回答
2807 浏览

javascript - JavaScript 中的立即调用函数表达式 (IIFE) - 传递 jQuery

我有以下代码,我知道它是一个 IIFE。但是,我一直无法理解 (jQuery) 和 ($) 是什么。我知道这与将 jQuery 的引用传递给 IIFE 有关,但有人可以清楚地解释我的目的吗?感谢您的帮助和时间:-)

0 投票
5 回答
3845 浏览

javascript - 如何简洁地分配并立即调用函数变量?

以下是在闭包中定义匿名函数,调用该函数,然后忘记它的方法:

这用于在不向脚本添加大量内容的情况下保持有限的范围(IIFE:立即调用函数表达式)。

如果您希望立即执行一个函数,同时仍保留该函数以供将来使用,如下所示:

这适用于我测试过的浏览器(Chrome、FF、IE8、IE10),但这不会通过 JSLint(错误调用)。这样做有兼容性问题吗?

有没有一种方法可以实现 JSLint 的善意?

0 投票
2 回答
59 浏览

javascript - IIFE 中的函数引用不可用?

如果我运行以下命令:

它在 Chrome 中抛出“TypeError: undefined is not a function”,在 Firebug 中抛出“TypeError: fn is not a function”。

fn应该在这个范围链中可用,而不必这样做window.fn

奇怪的是,如果我运行:

然后它按预期运行:fn被记录为一个函数,并且在 Chrome 或 Firefox 中都没有引发错误。

这让我觉得很傻,就像我不应该声称了解 JS。

0 投票
1 回答
938 浏览

javascript - 为什么立即调用函数表达式 (IIFE) 与自执行匿名函数不同?

很明显,在 EcmaScript 中,函数在被调用时会创建一个新的执行上下文。函数内定义的所有变量和函数只能在该函数范围内访问。但是当我们使用闭包时,变量和函数可能会在该上下文之外被访问。IIFE 是一个立即调用的函数表达式。很简单。

但是为什么 IIFE 与自执行匿名函数不同,我并不完全清楚!?

0 投票
2 回答
2092 浏览

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

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

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

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

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

0 投票
4 回答
367 浏览

javascript - JavaScript 中的“x = x || {}”技术是什么——它如何影响这个 IIFE?

首先,一个伪代码示例:

像这样调用:

我的问题:

  • 什么是技术名称/描述:window.FOO = window.FOO || {}

我了解代码的作用...请参阅下面的询问原因。


问的原因:

我这样调用传入的全局变量:

......但我只是不喜欢称那个小写“ foo”,考虑到全局被称为大写FOO......它看起来很混乱。

如果我知道这种技术的技术名称,我可以说:

我看过一个最近的(很棒的)例子,他们称之为“ exports”:

我想我只是想标准化我的编码约定......我想了解专业人士的工作以及他们的想法(这就是我在这里问的原因)!

0 投票
0 回答
115 浏览

javascript - IIFE 不会立即调用

在下面的代码片段中,IIFE init() 没有调用。如果需要,我可以发布任何其他代码。

这是一个下拉菜单。我正在测试,$Frame.Support()所以我很确定这与它有关,或者更多的是我更改代码结构的方式,以便它现在成为方法中的参数。

0 投票
1 回答
6504 浏览

javascript - 创建一个 JS 类:IIFE vs 返回原型

让我们看两个示例,我将在其中尝试解释我想要理解的内容。

和:

让我们看看!,这两个类都是作为函数表达式创建的,并且都同样工作。它们之间的唯一区别是: 第一个返回 Car 函数及其原型属性。第二个工作返回 Car 函数,避免原型属性,而是使用 IIFE。

return Car.prototype;使用和避免 IIFE 和使用return Car;使用 IIFE (类声明末尾的括号)有什么区别。

0 投票
4 回答
89253 浏览

javascript - 函数表达式前面的 JavaScript 加号

我一直在寻找有关立即调用函数的信息,在某个地方我偶然发现了这个符号:

有人可以向我解释+函数前面的标志是什么意思/作用吗?