Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSLint代码质量工具_Javascript_Jquery_Jslint - Fatal编程技术网

Javascript JSLint代码质量工具

Javascript JSLint代码质量工具,javascript,jquery,jslint,Javascript,Jquery,Jslint,因此,我使用以下方法检查了我的javascript: 如果我没有在{}之间包装if/FOR语句,我会得到如下“错误”: 第152行的问题字符27: 应为“{”,而不是saw “重置() 或者,如果我在内部初始化变量,我会得到: 第154行出现问题字符19:移动 将“var”声明添加到 功能 为什么这些被认为是错误? 这些不是应该被视为良好的实践吗?因为它们实际上减少了代码的大小,这对于javascript来说甚至比代码的速度更重要。对于if语句错误,缺少大括号被视为不好的实践,因为这会导致维护更

因此,我使用以下方法检查了我的javascript:

如果我没有在{}之间包装if/FOR语句,我会得到如下“错误”:

第152行的问题字符27: 应为“{”,而不是saw “重置()

或者,如果我在内部初始化变量,我会得到:

第154行出现问题字符19:移动 将“var”声明添加到 功能

为什么这些被认为是错误?
这些不是应该被视为良好的实践吗?因为它们实际上减少了代码的大小,这对于javascript来说甚至比代码的速度更重要。

对于
if
语句错误,缺少大括号被视为不好的实践,因为这会导致维护更困难。例如,如果您想如果在if语句中添加另一条语句,那么无论如何都需要添加大括号,这样一来,只需将大括号放在第一位就可以更轻松地进行维护

第二个错误,我觉得有点…固执己见,因为就我个人而言,我更喜欢在使用变量的地方声明变量,而不是在函数的顶部

就我个人而言,我现在更喜欢使用Crockfords Lint,因为我发现Crockfords Lint不太关心正确的代码,而更关心Crockfords对JavaScript应该是什么样子的看法,其他人的看法都是该死的。

JSLint是一种旨在减少错误数量的代码质量工具。你知道,你只能在if-lo中编写一条语句哦,不需要用牙套把它包起来,但那个家伙不需要。如果有一天你不小心做了呢

在开发过程中减少文件大小几乎是不必要的,这就是minifier的用途。在开发过程中,您需要使代码工作并有意义

函数顶部的变量是关于编码样式的恼人的争论,您可以在选项中关闭关于它的通知


无论如何,只要忽略您不关心的错误。

JSLint建议您将if和for语句用大括号括起来,因为如果您不小心缩进,可能会导致难以跟踪错误。例如:

if (somecondition)
    step1();
    step2();
从缩进来看,似乎只有在某些条件为真时才会执行step1()和step2(),但实际上step2()将始终运行,因为大括号缺失


如果你真的关心文件大小,我建议你研究一下像yuicompressor这样的JS压缩器。其中大多数都会删除不需要它们的If/for语句周围的大括号。这样你就可以两全其美:可读代码和提供时的小文件大小。

关于第二个问题,JSlint建议使用它因为javascript变量总是函数范围,而不是块范围。执行此操作:

function func(){
  var i;
  alert('foo');
  for(i = 0; i<3; i++){
     alert(i);
  }
  alert(i);
}
对代码进行一些更改后:

if (x > 10)
    alert("it's obvious x is positive");  
    alert("x is greater than 10");  //Logic error

使用大括号是不会出现问题的。

第一件事,if语句中的大括号,反映了JSLint作者的信念,即省略大括号会导致维护问题(我碰巧也有这个信念,但这一点既不存在也不存在)

第二件事实际上是特定于语言的:将
var
放在作用域顶部以外的任何位置(函数或全局)实际上会误导任何阅读代码的人,因为无论将其放在何处,都与它放在作用域顶部完全一样。详细信息:

您会问:“为什么这些被认为是错误?”它们不仅仅是不好的实践;它们是恶意的。这是因为它们鼓励以后几乎不可能找到的bug。同样的死亡愿望遗漏了在C和C++中的括号,这也同样是错误。


如果,像我一样,你试图通过省略括号来避免几次击键,然后被错误所咬和殴打,那么我保证你不会问这个问题:-)

为什么代码的大小比代码的速度更重要?@Pekka:没有跟随你,这些示例都不会影响代码速度。because它不在服务器上运行。考虑到当今计算机的速度,在客户端计算机上生成一个滞后的脚本是非常困难的,因此速度变得不那么重要了…@t.J。OP声明代码的大小比它的速度更重要。我的意思是,我认为这不是真的(或者不明白背后的道理)“Alexa”代码的大小通常对它的执行速度并不重要——它绝对不是一个很好的代码设计范例。考虑到大多数HTML页面,您传输的图像是您所有JavaScript组合的几十倍或几百倍。Crockford在JSLLT用户的脸上越来越多地提出自己的观点,现在已经有了。在我看来,这太离谱了。
var
这件事太荒谬了,因为将
=
!=
的所有用法都标记为错误,没有任何替代选项。就我而言,JSLint现在是不可用的。现在这让我松了一口气!我的大多数模块化代码都不会通过JSLint!+1 for JSHint!:DBraces,完全同意。所有va要在顶部声明的变量:主观。该特定参数的两侧都存在有效的参数。坚持在没有覆盖选项的情况下声明它是JSLint的许多缺陷之一。虽然你关于被提升的变量声明的观点是正确的,但我不认为这意味着你必须在函数顶部声明所有变量。我建议呃为了使变量的声明尽可能接近第一次使用变量时的可读性,我认为这样做没有什么大问题,我相信我正在做出明智的选择,因此JSLint坚持声明而没有覆盖选项,这使它基本上对我来说不可用。@Tim:是的,我不太喜欢没有覆盖的lint工具配置选项正是出于这个原因。(我强烈反对
var
,但这只是一种风格;保持函数足够短并不重要。)另一个我最喜欢的JSL
if (x > 10)
    alert("it's obvious x is positive");
if (x > 10)
    alert("it's obvious x is positive");  
    alert("x is greater than 10");  //Logic error