12

一个简单的 Javascript 问题,例如我有一个像这样的 Angular app.js;

'use strict';

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

我读到在 Javascript 文件的开头使用“use strict”会使该文件中的所有变量都以严格模式处理,这意味着当您使用全局变量时它会抛出错误(?),但是我们如何访问如果不在全局范围内,来自我们所有控制器和服务的“eventApp”对象?

4

2 回答 2

15

错误的假设是在严格模式下所有全局变量都是不允许的。实际上只有未定义的全局变量会引发错误。(事实上​​,如果你不能使用任何全局变量,你基本上什么都做不了。在全局范围内必须至少有一些东西。)

例如:

"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
})();

使用变量aorb不是问题,但是c会抛出错误。eventApp在您的示例中使用该变量应该没有问题。

于 2013-07-31T08:22:08.603 回答
4

您不必引用 eventsApp,因为 Angular 将通过您用于定义模块的名称“eventsApp”保存对对象的引用。

因此,在所有其他文件中,您可以使用:

angular.module('eventsApp');

访问模块。

于 2013-07-31T08:25:41.670 回答