Javascript 何时使用自动函数执行

Javascript 何时使用自动函数执行,javascript,anonymous-function,Javascript,Anonymous Function,对于下面的代码,我知道这是一个自动函数执行代码(我在JQuery中看到了它) 我想了解的是它的用法 在哪种情况下,我们更愿意使用上述语法 使用上述语法有哪些优点/好处 “立即可调用函数表达式”“是它的正确名称。而且它的用法很多,基本上它将紧密地包装范围,并且不允许访问其变量,除非我们有意这样做 您可以使用它来构建单例模式。Singleton模式的用法之一是修改数据封装。像setters和getter 可能的使用情况: <script src="someLibrary.js"><

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

我想了解的是它的用法

  • 在哪种情况下,我们更愿意使用上述语法

  • 使用上述语法有哪些优点/好处

  • 立即可调用函数表达式”“是它的正确名称。而且它的用法很多,基本上它将紧密地包装
    范围
    ,并且不允许访问其
    变量
    ,除非我们有意这样做

    您可以使用它来构建
    单例模式
    。Singleton模式的用法之一是修改
    数据封装
    。像
    setters
    getter

    可能的使用情况:

    <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>
    
    //它使用一个名为x的全局变量
    var x=10//现在在这种情况下,,
    //x属于某个库,将在此处被覆盖。
    
    所以为了避免这种冲突,我们可以用生命

    <script>
      (function(){
        var x = 10; 
        .
        .
        //Other codes goes here.
      })();
    </script>
    
    
    (功能(){
    var x=10;
    .
    .
    //其他代码在这里。
    })();
    
    可能重复@RickRunyon,我的问题与您提到的不同。我想了解它的使用场景。“单例模式只是实现数据封装”——嗯……还有更多。事实上,一个单例对象可以有方法,但没有它自己的数据。@nnnnnn-yeah
    只有
    应该被删除。我只是想引用singleton模式来说明IIEF的用法“它将紧紧包裹作用域,不允许访问作用域之外的变量”-正常函数也不允许访问作用域之外的变量。我不明白你的意思。@A.R.是的
    var func=function(){var x;}
    等于
    (function(){})()。除了一件事,正常的函数在其他地方也可以被多次调用。但IIEF不能。
    
    <script>
      (function(){
        var x = 10; 
        .
        .
        //Other codes goes here.
      })();
    </script>