我见过以下内容:
(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()...()
按照上面的方式做是否有任何优势?
我可以想到几个优点(但我很确定还有更多):
立即调用函数表达式(IIFE)对于不"擦除"全局对象(例如窗口)是好的(除其他外).
IIFE内定义的任何变量都不会在外部提供(除非明确提供).
(在某些情况下,你可能需要从其他脚本访问应用程序,你可以公开这样说:. window.someApp = app;)
你可以"安全地"使用严格模式('use strict')!(这个原因应该足够了.)
"安全"意味着您可以strict mode在本地使用而不会破坏其他脚本(例如第三方库,其他开发人员的模块)不合strict mode规的危险.
如果您在'use strict'IIFE之外使用,任何共享相同JS上下文的代码(例如其他脚本(内联或外部))都会受到影响(更不用说JSHint也会抱怨:)).
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |