我刚刚开始将JSLint放入我的构建管道中,它非常棒。虽然它在我的大多数文件中指出了一些不是错误的东西,尽管它会将其视为错误。我已经改变了我的构造函数,现在接受这个对象的一个实例,所以测试通过了,但是我不确定我是否真的应该这样做,因为在所有其他主要语言中,我不需要这样做。
为了让它更有意义,我必须添加更多的上下文,所以现在开始。
我有最接近的东西,我可以得到一个Enum在javascript基本上是一个全局范围的JSON风格的常量负载变量,它是用来描述事件类型,而不是每个类,想要提高/听事件必须把硬编码字符串,它可以使用这个 Enum 变量常量。正如我刚才提到的,我有这些类使用这个静态enum,但他们只是利用这个变量的全局版本,而不是通过构造函数传递的本地实例,这就是我的问题开始的地方,在实际的应用程序中,我知道一个事实,枚举文件将包括这将使其全局可访问。然而,JSLint没有上下文,所以它只看到一个单独的文件,而不用担心外部依赖,因为它认为这些是坏的,这在任何其他语言中都是正确的,但在JS中,如果没有全局变量,你就无法实现同样的事情(据我所知)。
正如我最初所说的,我现在已经将这个enum添加到构造函数中,让JSLint传递文件,然而它只是感觉有点错误,但也许这是因为我认为它是一个普通的开发人员,而不是一个javascript开发人员…
现在我应该坚持这一点,并通过构造函数传递它,并在我的测试中模拟它,还是我应该采取应该一直存在的方法?
我相信这将取决于人们的个人意见,但如果我是一个白痴,应该只是保持每个文件作为自己的筒仓,或者如果有一种方法让我有我的蛋糕和吃它,那将是很好的。
我发现JSLint支持注释来告诉它全局变量:
/*globals myGlobal*/
我决定只使用我的enum作为全局变量,并继续处理更重要的事情。
JavascriptLint在这方面大大改进了JSLint,因为它允许您定义文件间依赖:
如果脚本引用了另一个脚本中的变量、函数或对象,则需要在脚本中添加/*jsl:import PathToOtherScript*/注释。这告诉JavaScript Lint检查其他脚本中声明的项。相对路径是基于当前脚本的路径来解析的。
见:http://javascriptlint.com/docs/index.htm