So verstehe ich den Zweck eines IIFE ist, sie aus dem globalen Geltungsbereich zu nehmen. Im Angular Stil guide, heißt es, dies zu vermeiden:Wohin gehen in einem IIFE deklarierte Variablen?
/* 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() { }
und statt dies tun:
/**
* 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() { }
})();
Ich gehe davon aus das macht die Speicherfunktion für mich in einem Controller einige Zeit anrufen später ... aber wo genau ist es, wenn es nicht im globalen Umfang ist?
verwendet Winkel aber die API hilft 'storage' zu "eckig" oder irgendeine Art von Objekt, das als "app" bezeichnet wird und es möglicherweise mit dem Alias "Speicher" zugänglich gemacht hat. – Marty
@Marty Hmm ... ich denke das macht Sinn. In diesem Fall gibt es der Fabrik Zugriff auf die Speicherfunktion, aber sonst nichts richtig? – PDN