我在JavaScript和AngularJS中一直使用立即执行函数(IIFE),并采用以下结构:
方法1:
//IIFE Immediately Invoked Function Expression
(function () {
}());
然而,我经常看到以下代码,其中一个变量被赋值给了IIFE
方法2:
//IIFE Immediately Invoked Function Expression assigned to doStuff variable
var doStuff = (function () {
}());
注意: 此问题不是关于什么是此模式或什么是IIFE的问题。这个问题具体涉及使用一个返回变量在IIFE上以及它与Angular实践的关系。
在Angular中,方法1可以正常工作,但在我看到的许多原始JS示例中,使用了方法2。我的假设是,任何封装在doStuff
中的东西都可以通过它来使用和调用。然而,我并不100%确定这两种方法之间的确切原因或区别,并需要一些帮助来理解何时使用不同的方法?
doStuff
时,而不仅仅执行void IIFE。如果您正在寻找用例,则应搜索“模块模式”,因为这就是具有返回值的IIFE的称呼。 - BergiAngular
中,他们并不总是使用返回变量,然而许多JS示例确实使用了返回变量。我想知道和理解“为什么”。 - atconwayAngular
的角度出发想要表达的是,为什么我们可以有返回值为空的IIFE
,但仍然可以返回和使用公共可用函数?我正在寻找验证,即控制器被包装在IIFE
中的Angular
模块容器是我们仍然可以访问IIFE
中不包含返回变量的这些函数的原因。但是控制器本身确实具有返回变量,并且在使用app.controller
时进行了注册。 - atconway