【问题标题】:How is it possible to use object "angular" even if 'use strict' statement is used?即使使用“使用严格”语句,如何使用对象“角度”?
【发布时间】:2015-07-26 17:13:48
【问题描述】:

我正在使用 gulp-jshint,它让我在每个文件中都添加了“use strict”指令,因此我无法使用在 app.js 文件中定义的全局对象 emApp,如下所示:

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

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

【问题讨论】:

  • 不清楚你在这里问什么。 use strict 不会阻止声明变量,也不会阻止 Angular Javascript 定义 angular 变量。听起来您可能对strict 模式的作用感到困惑。您可以在此处阅读摘要:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • @jfriend00 您应该将其发布为答案
  • @DanPantry - 当您不真正理解问题时,很难发布答案。是的,我认为 OP 对严格模式感到困惑,但我真的不知道他们在问什么。
  • @DanPantry 我试图澄清我的问题。我希望你现在明白我在问什么。

标签: javascript angularjs gulp jshint


【解决方案1】:

使用'use strict',您必须分配给this.emApp(顶层)或window.emApp(也适用于函数),不需要var

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

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

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

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

【讨论】:

  • 更好的是,您可以通过 webpack 使用 commonjs 模式并将 angular 模块导出为 commonjs 模块。这样你就不必到处重复这个名字了
  • 它没有解释为什么全局角度对象被 jshint 忽略。
  • @zhekaus 使用/*global angular */,我已经更新了 jshint 的答案。
  • 我找到了另一个答案。要使 jshint 忽略任何全局变量,您必须将此变量添加到 .jshintrc 文件中,就像对 angular 对象所做的那样,添加到部分 "globals": ... "globals": { "angular": false, "emApp": false } }
【解决方案2】:

有两个选项可以告诉 JSHint 全局变量: 1)如果你想告诉特定文件中的全局变量,在文件的开头使用这个指令:

/* globals myVariable: false */

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

"globals": {
   "myVariabe": true
}

更多关于使用 JSHint 的全局变量请阅读此处:http://jshint.com/docs/

附:问题中提到的角度对象是在 .jshintrc 文件中定义的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-28
    • 2020-02-27
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多