【问题标题】:(function() {})() declaring/initializing javascript function [duplicate](函数(){})()声明/初始化javascript函数[重复]
【发布时间】:2010-03-08 13:36:20
【问题描述】:

可能重复:
JavaScript: Why the anonymous function wrapper?

我想问你把所有东西都包起来的原因是什么

(function() {
  document.write("Hello World!");
})(); 

功能?

【问题讨论】:

    标签: javascript function initialization


    【解决方案1】:

    自执行匿名函数的主要目的是将所有内容包装在私有命名空间中,这意味着声明的任何变量都不会污染全局命名空间,基本上就像一个沙盒。

    var test = 1;
    

    test 会污染全局命名空间,window.test 会被设置。

    (function() {
        var test = 1; alert( test );
    })();
    

    window.test 未定义,因为它在我们的私有沙箱中。

    【讨论】:

      【解决方案2】:

      “保护”全局命名空间免受污染。

      (function() {
        var something = "a thing";
        // ...
        if (something != "a thing") alert("help!");
        // ...
        function utility(a, b) {
          // ...
        };
        // ...
      })();
      

      现在,这些临时变量和函数都在外部一次性函数中受到保护。里面的代码可以使用它们,但全局命名空间保持干净,没有脏的、不需要的变量。

      全局命名空间是一种宝贵的资源。我们都应该意识到它对我们自己,尤其是对我们的孩子的重要性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-10
        • 2012-06-17
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-14
        • 2014-06-01
        相关资源
        最近更新 更多