任何人都可以解释以下片段之间的区别..
var a = function(){
return function(){
//some code
}
}();
和
var a = function(){
//some code
}
我理解我们使用return函数来访问父函数中定义的变量,这是一个自动执行的函数,但在第一种情况下,第一个函数除了返回另一个函数之外什么都不做。我已经看过几次这种类型的功能,但我无法弄清楚它的用途。另请说明上述功能
var session = (function(){return ${session}})();
和
var session = ${session};
答案 0 :(得分:1)
我有95%的信心,这里的官方答案应该是,至少在OP的两个案例中,使用IIFE是多余的。在这两个例子中,展开的版本更好,更清晰。
另一种未提及的可能性是代码示例可能来自编译成JavaScript的许多语言之一,例如coffeescript。 IIFE的包装可能是编译器的一个很好的通用策略,但它有时会产生多余的代码,例如OP的例子。
答案 1 :(得分:0)
您需要阅读两件事Closures和Function and function scope。