何时使用自动函数执行

When to use automatic function execution

对于下面的代码,我知道它是一个自动函数执行代码(我看到它被用在JQuery)。

var f = function() {

  // function body code
  // ...
  // ...

}();

我想了解的是它的用法。

  1. 在哪些情况下我们应该更喜欢使用上述语法?

  2. 我们使用上面的语法得到什么advantages/benefits?

"立即调用函数表达式" 是它的正确名称。而且它的用法很多,基本上它会紧紧包裹 scope 并且不允许外部范围访问它的 variable 除非我们有意这样做。

并且您可以使用它构建 singleton pattern。单例模式的一个用法是修改data encapsulation。喜欢 settersgetters.

可能的使用情况:

<script src="someLibrary.js"></script> //And it uses a global variable called x
<script>
  var x = 10; //Now at this situation, 
              //the x belongs to someLibrary will be overridden here.
</script>

所以为了避免这样的冲突,我们可以使用IIFE,

<script>
  (function(){
    var x = 10; 
    .
    .
    //Other codes goes here.
  })();
</script>