所以我明白一个IIFE的目的是让他们脱离全球范围。在角式的guide,它说要避免这种情况:在IIFE中声明的变量在哪里去?
/* avoid */
// logger.js
angular
.module('app')
.factory('logger', logger);
// logger function is added as a global variable
function logger() { }
// storage.js
angular
.module('app')
.factory('storage', storage);
// storage function is added as a global variable
function storage() { }
,而是这样做:
/**
* recommended
*
* no globals are left behind
*/
// logger.js
(function() {
'use strict';
angular
.module('app')
.factory('logger', logger);
function logger() { }
})();
// storage.js
(function() {
'use strict';
angular
.module('app')
.factory('storage', storage);
function storage() { }
})();
我假设这使得存储功能可对我来说,控制器一些时间打电话后来...但是如果它不在全球范围内,究竟在哪里呢?
从未使用过的角度,但API的措辞表明您已经绑定'storage'作为工厂'angular'或某种被称为'app'的对象,并可能使用别名'storage'来访问它。 – Marty
@Marty嗯......我认为这是有道理的。在这种情况下,它会让工厂访问存储功能,但没有其他的权利? – PDN