Javascript函数返回值

use*_*573 5 javascript jquery jsp

任何人都可以解释以下片段之间的区别..

var a = function(){
       return function(){
                  //some code 
                        }
                  }();
Run Code Online (Sandbox Code Playgroud)

 var a = function(){
                  //some code
                   }
Run Code Online (Sandbox Code Playgroud)

我理解我们使用return函数来访问父函数中定义的变量,这是一个自执行函数,但在第一种情况下,第一个函数除了返回另一个函数之外什么也不做.我已经看过几次这种类型的功能,但我无法弄清楚它的用途.另请说明上述功能

var session = (function(){return ${session}})();
Run Code Online (Sandbox Code Playgroud)

var session = ${session};
Run Code Online (Sandbox Code Playgroud)

Jon*_*nah 1

我有 95% 的信心,这里的官方答案应该是,至少在 OP 的两个示例案例中,使用 IIFE 是多余的。在这两个示例中,未包装的版本更可取且更清晰。

另一种没有提到的可能性是,代码示例可能来自编译为 JavaScript 的多种语言之一,例如 CoffeeScript。对于编译器来说,使用 IIFE 包装可能是一个很好的通用策略,但它有时会导致多余的代码,例如 OP 的示例。