全局对象守护神 - JS 的匿名自调用函数

文章目录

    我们经常会看到类似的代码

    <script type="text/javascript">
    (function() {
      var a = 1;
      console.log(a);
    })();
    </script>
    

    实际上这就是匿名自调用函数。

    Self-invocation (also known as auto-invocation) is when a function executes immediately upon it’s definition.

    使用自调用函数的主要目的是*创建一个新的作用域,以防止引入新的全局变量,或者污染现有的全局变量*。

    由于在 Javascript 中,使用函数是创建作用域的唯一方式,所以只能使用自调用函数。

    实际上,非常好理解, 如果使用常见的方式是

    <script type="text/javascript">
    var f = function() {
      var a = 1;
      console.log(a);
    };
    
    f();
    </script>
    

    但是,这样会引入一个新的全局变量 f。

    如果要传递参数呢?

    <script type="text/javascript">
    (function(name) {
      var a = "hello";
      console.log(a + ' ' + name);
    })('zhongwei');
    </script>
    

    遇到不得不设置全局变量时,正确的姿势是怎样的?

    使用 window, 例如

    window.a = 1;
    

    参考

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式