我正在使用JSLint验证我的大多数外部Javascript文件,但是我得到的最大错误是来自在定义它们之前使用的函数。
这真的是我应该担心的问题吗?
似乎Firefox,IE7和Chrome不在乎。根据JSLint的说法,像popular init()
(我经常使用)之类的功能通常位于顶部,因为这对我来说很有意义(我喜欢假装类似于main()
),因此需要将其压入文件的底部。
Answers:
如果使用function
关键字声明函数,则可以在声明函数之前使用它们。但是,如果通过其他方法(例如,使用函数表达式或Function
构造函数)声明函数,则必须在使用函数之前先声明函数。有关更多信息,请参见Mozilla开发人员网络上的此页面。
假设您使用function
关键字声明了所有函数,我认为这将成为编程风格的问题。就我个人而言,我更喜欢以一种看起来合乎逻辑的方式构造函数,并使代码尽可能易于阅读。例如,像您一样,我会将init
函数放在顶部,因为这是一切的起点。
由于这是Google收视最高的命中,而其他人最初可能不会在jslint工具中看到它,因此有一个名为“ Tolerate misordered definitions”的选项可让您隐藏这种类型的错误。
/*jslint latedef:false*/
true
似乎并不能为我“解决”此问题。
如果您使用的是jshint,则可以设置latedef
为nofunc
,它将仅忽略后期的函数定义。
文档-http: //www.jshint.com/docs/options/#latedef
用法示例:
/* jshint latedef:nofunc */
noop();
function noop() {}
希望这可以帮助。
从jslint的网站(http://www.jslint.com/lint.html),您可以了解/ * global * /指令,该指令允许您设置假定在其他地方声明的变量。
这是一个示例(将此放在文件顶部):
/*global var1,var2,var3,var4,var5*/
根据我的经验,实际上不需要:true:false,但是根据我在网站上阅读的内容,建议使用它。
确保初始全局语句与处于同一行/*
,否则将中断。
要禁用jshint
所有文件的警告,请将其放置在您的.jshintrc
文件中:
{
"latedef": false
}