我是否需要运行我的AngularJS应用程序代码,或者如果我使用ng-app,它是否会被AngularJS调用?

0 javascript angularjs

我见过以下内容:

(function () {
    'use strict';

    // Module name is handy for logging
    var id = 'app';

    // Create the module and define its dependencies.
    var app = angular.module('app', [
    ]);

    app.run(['$q', '$rootScope',
        function ($q, $rootScope) {

        }]);
})();
Run Code Online (Sandbox Code Playgroud)

我也看过这个没有(function()...()

按照上面的方式做是否有任何优势?

gka*_*pak 5

我可以想到几个优点(但我很确定还有更多):

  1. 立即调用函数表达式(IIFE)对于不"擦除"全局对象(例如窗口)是好的(除其他外).
    IIFE内定义的任何变量都不会在外部提供(除非明确提供).
    (在某些情况下,你可能需要从其他脚本访问应用程序,你可以公开这样说:. window.someApp = app;)

  2. 你可以"安全地"使用严格模式('use strict')!(这个原因应该足够了.)
    "安全"意味着您可以strict mode在本地使用而不会破坏其他脚本(例如第三方库,其他开发人员的模块)不合strict mode规的危险.
    如果您在'use strict'IIFE之外使用,任何共享相同JS上下文的代码(例如其他脚本(内联或外部))都会受到影响(更不用说JSHint也会抱怨:)).