Why are self-executing anonymous functions used in Javascript Module pattern?

前端 未结 3 2163
野性不改
野性不改 2020-12-31 17:01

In the module pattern in JavaScript \"Immediately-Invoked Function Expressions\" (also known as self-executing anonymous functions) are used as self executing functions that

3条回答
  •  天涯浪人
    2020-12-31 17:04

    How can a self-executing function hide private variables and only expose the returned object. Why does this not happen with a normal JavaScript function?

    It does happen with normal JavaScript functions.

    function MakeModule() {
        var privateVariable = "foo",
            privateMethod = function () {
                alert('private method');
            };
    
        return {
            PublicMethod: function () {
                alert(privateVariable); 
                privateMethod(); 
            }
        };
    }
    
    var Module = MakeModule();
    

    would work just fine.

    The only difference is that the anonymous function introduces one less global variable and allows for itself to be garbage collected while MakeModule can't be collected unless explicitly deleted by the author.

提交回复
热议问题