问题标签 [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 投票
4 回答
128 浏览

javascript - 为什么这个立即调用的方法会返回窗口对象?

为什么立即调用的方法将window对象返回为this

但是当稍后执行时,该方法返回对象o(正如我在两种情况下所期望的那样)?

0 投票
1 回答
217 浏览

javascript - JS IIFE 和带参数的内部函数

我开始更详细地研究 JS,在测试了一些代码之后,我想出了这种情况:

控制台的输出如下:

有人可以解释一下这种行为,因为我无法理解它。

我知道第一个函数是 IIFE,它在创建时立即执行。我唯一的问题是传递的参数如何传递给内部函数?

提前感谢您的信息和评论

0 投票
1 回答
226 浏览

javascript - 对象字面量和在 IIFE 中返回对象的函数之间有什么区别和优点/缺点?

因此,为了澄清这个问题,我了解 IIFE 和对象文字是什么。但是,我不确定这两个示例之间的区别是什么(除了一个是函数,另一个是对象文字):

示例 1:


示例 2:


两个示例都返回相同的结果,并且(几乎)以相同的方式调用。但:

1)它们之间的根本区别是什么?
2)使用其中一个有好处吗?
3)我已经看到代码(在第二个示例中)return myStuff.arbitraryValuereturn myStuff().arbitraryValue. 这怎么可能?
4)如果我只是想避免全局冲突并编写干净的代码,这是否矫枉过正?
5)这些例子中的任何一个都被认为是“最佳实践”,还是有其他选择?

提前谢谢了!

0 投票
1 回答
56 浏览

javascript - 需要帮助来理解这个立即调用的函数示例

这是我从教程中找到的一段代码,但我无法清楚地理解它的目的。这是示例:

应用程序.js

我感到困惑的第一部分是为什么使用与参数相同的参数调用它?
第二个疑问是为什么如果没有“oojs”应该以对象字面量作为参数调用函数?这是必要的吗?
最后为什么它应该返回与其函数名(oojs)相同的原因。


也许这是一种创建对象的方法,但如果有人可以帮助我解决这个问题,我将不胜感激。

0 投票
1 回答
18 浏览

javascript - 我怎样才能使这个对象模式工作?

这种模式真的让我的船漂浮,但我怎样才能让它充当一个基类而不使用'new','this'或'Object.create()'?可能吗?

0 投票
6 回答
1446 浏览

swift - Swift 语言中的 IIFE

在 javascript 中,我们经常使用 IIFE。就像是

Swift 中有闭包,函数是第一类对象。我的问题是:Swift 中是否有等效的 IIFE?

0 投票
1 回答
497 浏览

javascript - 窗口事件侦听器内部的回调不起作用

当我尝试运行它时,它根本不起作用。我不断得到 undefined is not a function,这是为什么呢?它是否与它在 eventListener 中的某些东西有关?或者我在函数内部传递了参数?太疯狂了,我已经使用了很多次了,只是现在在 eventListener 中似乎遇到了问题。

任何人都可以在这个问题上启发我吗?

现实生活中的例子

0 投票
1 回答
197 浏览

javascript - 如何在嵌套的 IIFE 模块中引用父 JavaScript 函数?

取下面的代码......在setTimeout匿名函数中,引用该alert.hide()方法的正确方法是什么?将整个调用写成 是正确的admin.alert.hide();吗?或者有没有更好的方法来引用admin而不必直接调用它?

0 投票
1 回答
1663 浏览

javascript - 在 IIFE 中测试 javascript

我的团队负责人希望我将我的 js 代码包装在一个 IIFE 立即调用的函数表达式中。我不知道如何在我的茉莉花规格文件中进行间谍活动。

我将如何监视以下内容:

spyOn(window,'function_1')不起作用。将窗口传递到 IIFE 不起作用。

两者都尝试(x=function()...(function x() ...然后spyOn(x,'function_1')也不起作用。

我在网上找不到任何关于此的内容。

0 投票
3 回答
1638 浏览

javascript - JavaScript 砰“!” 函数与前导分号“;” IIFE

Airbnd 建议我这样做:

因为:

这确保了如果格式错误的模块忘记包含最后的分号,则在连接脚本时不会在生产中出错。

bang 让我可以绕过语言的语法规则:

当连接其他模块时,爆炸似乎起到了作用:

然而,它似乎实际上并不“安全”,因为如果其他人在他的脚本末尾没有分号:

似乎以分号开头的 IIFE 更好。

我错过了什么吗?使用 bang "!" 真的可以接受吗?函数或前导分号“;” IIFE 真正优越是因为它们的连接方式吗?