更新:原来这是重复的:JSLint: Using a function before it's defined error
我们已经在我们的项目中采用了新的jslint,并且正如它所承诺的那样 - jslint开始伤害我们的感情。但不仅如此,它让我们质疑它拥有的相当多的规则。老实说,对我而言,它在某种程度上类似于ANSI C编程风格。这是一个:
JS Lint:在定义之前使用'someMethodFoo'。
这是因为我们使用自上而下的编码风格:每个文件首先包含最重要的方法。该方法的实现被分解为“子”方法调用,以保持代码清洁和结构良好。这意味着在大多数情况下,方法在定义之前使用。事实上,我认为这是一种良好的做法,它使代码更易于理解,适用于未来的读者,因而更易于维护。
为什么JS Lint希望我们将其颠倒过来?
我们可以通过使用--undef标志来关闭此选项。但是有理由反对吗?例如,订单是否会影响口译员的表现?在每个浏览器迟早都会从解释器切换到编译器的时代,这是否重要?
答案 0 :(得分:1)
这只是一个惯例而code conventions page没有给出任何解释为什么以这种方式强制执行
所有功能都应在使用前声明。内在的功能 应该遵循var语句。这有助于说明什么 变量包含在其范围内。
我们可以把它读作:
所有功能都应在使用前声明。这有助于实现 它清楚可用的功能和它们提供的功能。
我认为这是为了让某人阅读代码有机会在使用它之前了解函数的作用。如果您更喜欢自上而下的方法,我认为这是完全可以接受的,您应该使用--undef
标志来反映您的约定。毕竟,该工具的主要目标是帮助您:)
编辑:this关于SO的问题可能有助于澄清为什么它有用作为警告