Глобальные переменные в строгом режиме 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');
Чтобы получить доступ к модулю.