因此,我使用以下代码检查了我的javascript:http://www.jslint.com/
如果我没有在{ }之间包装IF/FOR语句,就会得到如下“错误”:
第152行出现问题,字符27:预期的'{‘,而不是看到’重置()‘。
或者,如果我在内部初始化变量,我得到:
第154行(字符19)的问题:将'var‘声明移到函数的顶部。
为什么这些被认为是错误?这些不应该被认为是好的实践,因为它们实际上减少了代码的大小,对于javascript来说,这甚至比代码的速度更重要?
发布于 2011-05-01 16:39:16
对于if语句错误,缺少开口支撑被认为是错误的做法,因为它会使维护更加困难。例如,如果您想在If语句中添加另一条语句,那么无论如何您都需要添加大括号,所以只在一开始就包含它们就更容易了。
第二个错误,我发现有点..。固执己见,因为就我个人而言,我更喜欢声明变量更接近使用它们的位置,而不是在函数的顶部。
就我个人而言,我现在更喜欢使用JSHint,因为我发现Crockfords对正确的代码不太了解,而更多的是关于JavaScript应该是什么样子的意见,其他人的意见都是该死的。
发布于 2011-05-01 16:42:25
JSLint建议您用大括号包装if和for语句,因为如果缩进不小心,可能会导致很难跟踪错误。例如:
if (somecondition)
step1();
step2();从缩进来看,只有当step1()和step2()为true时才会执行,但实际上,由于缺少大括号,step2()将始终运行。
如果您真的关心文件大小,我建议您研究一下JS压缩器,比如yuicompressor。其中大多数将移除不需要它们的if/for语句周围的大括号。然后,您可以拥有这两个世界中的最好的:可读的代码和小的文件大小,当它服务时。
发布于 2011-05-01 16:44:42
关于第二个问题,JSlint推荐它,因为javascript vars总是函数作用域的,而不是块作用域。这样做:
function func(){
var i;
alert('foo');
for(i = 0; i<3; i++){
alert(i);
}
alert(i);
}是准确的(100%准确!)与以下相同:
function func(){
alert('foo');
for(var i = 0; i<3; i++){
alert(i);
}
alert(i);
}因此,i不是用于范围的(就像在其他语言中一样)。这就是为什么jslint建议将所有的vars放在函数的顶部,这样您就不会觉得存在块作用域变量了。
尊重第一个问题,我同意你的意见。我不认为这是个大问题。但是JSLint认为这是一个问题,因为如果稍后在if语句中添加行,忘记放置大括号,就会出现逻辑错误,正如杰夫所指出的。
在此之前:
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一个用花括号就不会发生的问题。
https://stackoverflow.com/questions/5849729
复制相似问题