即使使用了 'use strict' 语句,怎么可能使用对象 "angular"?

How is it possible to use object "angular" even if 'use strict' statement is used?

我正在使用 gulp-jshint,它让我在每个文件中添加“使用严格”指令,因此我无法使用我的 app.js 文件中定义的全局对象 emApp像这样:

var emApp = angular.module('emApp');

但是,我看到 jshint 没有提到 angular 对象。我想知道这是为什么以及如何用我自己的 emApp 对象做同样的事情。

对于 'use strict',您必须分配给 this.emApp(在顶层)或 window.emApp(也在函数内工作),不需要 var

虽然每个模块化方法(Angular 也是如此)的目的是尽量减少全局变量的使用,但这样做

/*jshint browser: true */
/*global angular */
'use strict';

var emApp = angular.module('emApp');

在每个使用模块的地方都是一件好事。

有两个选项可以告诉 JSHint 关于全局变量的信息: 1) 如果您想在特定文件中说明全局变量,请在文件开头使用此指令:

/* globals myVariable: false */

2) 如果你想为项目中的所有文件声明全局,你可以在 .jshintrc 文件中添加此指令,如下所示:

"globals": {
   "myVariabe": true
}

在此处阅读有关 JSHint 全局变量的更多信息:http://jshint.com/docs/

P.S。 angular问题中提到的对象在.jshintrc文件中定义