我已经使用在JavaScript
和AngularJS
IIFE和已使用的结构如下:为什么将一个IIFE分配给一个变量?
方法1:
//IIFE Immediately Invoked Function Expression
(function() {
}());
然而,我已经看到了经常以下其中一个变量是分配给IIFE
方法2:
//IIFE Immediately Invoked Function Expression assigned to doStuff variable
var doStuff = (function() {
}());
NOTE:这个问题是不是关于这种模式是什么或什么是一个IIFE是。这与为什么要在IIFE上使用返回变量及其与Angular实践的关系有关。
在角度方法1工作正常,但在我看到的许多原始JS例子中,使用了方法2。我的假设是,任何在doStuff
中设置的东西都可以通过它调用并调用。但是,我不能100%确定这两种方法之间的确切推理或区别,并且需要一些帮助来理解何时使用不同的方法?
@Bergi - 这ISN”重复 - 请仔细阅读问题,并查看与该链接的区别。该链接不回答这个问题。 – atconway 2014-10-19 15:53:23
我不确定我是否理解这个问题。你似乎知道IIFE是做什么的;现在为什么要使用IIFE的退货?无论何时你想从表达式中返回一个返回值给doStuff赋值,而不是只执行一个void IIFE。如果你正在寻找用例,你应该谷歌为“模块模式”,因为这是一个带有返回值的IIFE被调用。 – Bergi 2014-10-19 15:59:13
@Bergi - 我相信你刚刚发表的评论实际上是对我发布的内容以及我所称的'答案'的一个很好的解释。如果你重新打开并发布该Blurb作为答案,我会upvote。不要忘记,仅仅因为某些东西对你来说显而易见并不意味着它是OP(我)。另外,因为它显然不是结案的理由。我需要具体的例子和解释为什么返回变量与不使用。在Angular中,他们一直没有返回变量,但很多JS例子都使用返回值。我想知道并理解'为什么'。 – atconway 2014-10-19 16:06:22