【问题标题】:jslint Import global variables from another filejslint 从另一个文件导入全局变量
【发布时间】:2013-11-26 15:02:32
【问题描述】:

在使用jslint分析文件时,有没有办法使用在另一个js文件中声明的全局变量。

目前我必须在头文件中声明我所有的全局变量,但这真的很慢而且不实用。

/* global console, myglobalvar1, othervar... */ 

有没有办法像 Re-sharper 一样导入其他脚本文件?

/// <reference path="my.js" /> 

【问题讨论】:

    标签: jslint


    【解决方案1】:

    实际上,JSLint 可能在这里为您建议一个有用的代码架构改进。为什么不将所有这些全局变量放在同一个命名空间中?

    而不是……

    var Global1 = "spam",
        Global2 = 2;
    

    ...使用...

    var MyStuff = MyStuff || {};
    MyStuff.Global1 = "spam";
    MyStuff.Global2 = 2;
    

    ...或者,更传统的...

    var MyStuff = {
        Global1: "spam",
        Global2: 2 
    };
    

    ...现在您可以简单地包含...

    /*global MyStuff*/
    

    ... 在每个 [other] 文件和利润上。如果您稍后向MyStuff 添加更多项目,您已经被覆盖了。如果您需要在将其视为全局的页面上向 MyStuff 添加一些内容,那也很简单...MyStuff.NewField = "new";

    你有很多东西从一个文件移动到另一个文件已经表明它们是每个文件都需要了解的一个功能单元(或几个功能单元)。 JSLint 建议您将它们分组。

    【讨论】:

    • 有效点Ruffin,我会通过分组来减少每个文件的变量数量
    • 这种架构不只是删除了 JSLint 检测缺失全局变量的能力吗? MyStuff.Global3 不存在,但 JSLint 会认为这很好,因为它停止在 MyStuff 处检查。
    • JavaScript 是一种动态语言,所以你真的不能比检查“命名空间”的顶层更好。 Global3 可以添加到项目的任何文件中,无论 MyStuff 是在哪里定义的,并且 JSLint 仅在 file 范围内进行 lints。相信我,一旦你的代码变得相当复杂,故意命名空间是保持关注点分离的实际必要条件,正如 OP 的 global 行所暗示的那样! ;^)
    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2021-06-22
    • 2018-05-19
    • 2017-04-25
    相关资源
    最近更新 更多