Глобальные переменные в строгом режиме JavaScript

Простой вопрос Javascript, например, у меня есть Angular app.js, например:

'use strict';

 var eventsApp = angular.module('eventsApp',[]);

Я читал, что использование "use strict" в начале файла Javascript позволяет обрабатывать все файлы в этом файле в строгом режиме, что означает, что он будет вызывать ошибку при использовании глобальной переменной (?), но тогда как можем ли мы получить доступ к этому объекту "eventApp" из всех наших контроллеров и служб, если это не в глобальной области?

Ответ 1

Неверное предположение заключается в том, что в строгом режиме все глобальные переменные запрещены. Фактически только глобальные переменные undefined выдают ошибку. (Фактически, вы вообще ничего не могли сделать, если бы не могли использовать какие-либо глобальные переменные. В глобальной области должно быть как минимум что-то.)

Например:

"use strict";

var a = "foo";
var b;

(function() {
    a = "bar";  // this is ok, initialized earlier
    b = "baz";  // this is also ok, defined earlier
    c = "qux";  // this is not, creating an implicit global
})();

Использование переменных a или b не является проблемой, но c выдаст ошибку. В вашем примере не должно быть проблем с использованием переменной eventApp.

Ответ 2

Вам не нужно ссылаться на eventsApp, потому что angular будет ссылаться на объект по имени 'eventsApp', которое вы используете для определения модуля.

Итак, во всех других файлах вы можете просто использовать:

angular.module('eventsApp');

Чтобы получить доступ к модулю.