私有与公共Javascript函数

Bar*_*der 4 javascript

有人可以解释这两个功能之间的区别吗?

(function(Engine, $, undefined) { //hidden from scope
    //public function below
    Engine.Init = function() {
        console.log("IM PUBLIC");
    }

    //anonymous functions below
    function Login() {
        console.log("IM PRIVATE");
    }
})( window.Engine = window.Engine || {}, jQuery );
Run Code Online (Sandbox Code Playgroud)

具体来说,我想知道为什么Engine.Init()可用,ConsoleLogin不是.

SLa*_*aks 7

InitEngine引用函数的对象的属性.
您可以像任何其他财产一样访问它.

Login是匿名的一个局部变量,"立即调用的函数表达式"(IIFE); 与其他局部变量一样,其名称仅在声明函数中可见

  • 它只是一个语法修饰,以确保函数定义可以立即调用.请参阅http://benalman.com/news/2010/11/immediately-invoked-function-expression/,"An aside:functions,parens和SyntaxErrors". (3认同)