我的代码或plovr出了问题。我去JSLint寻求帮助。但是,JSLint似乎将此视为致命错误,并拒绝检查更多代码:
for (var i = 0; i < data.length; i += 4) {
为什么呢?我喜欢这种宣称“我”的方式。
如果你在Windows上,JSHint似乎不是一个替代品。我正在尝试在线Lint。我觉得这个bug有点难以找到,所以我很乐意提供有关优秀代码检查器的建议。
答案 0 :(得分:5)
我同意Niet the Dark Absol这个工具是基于意见的。反思它施加的所有规则,以及它们是否真正在您的特定项目中有意义。它也不是JavaScript的唯一“lint”工具。也许ESLint或其他此类工具更适合您的需求。
但我也不同意他的观点:在函数开头声明所有变量是不好的做法,特别是如果函数很长,那么这样做可以理解你的程序更难。无论JavaScript的作用范围如何,恕我直言都认为:它不是程序语义,而是代码可读性!
我认为变量应该被声明为尽可能接近它的第一次使用(即在你的情况下:在for循环中)。这可以确保有人阅读您的代码(三个月后同事或您自己)尽可能少地记录您的信息。在开始时声明所有变量会强制读者在整个函数中记住所有这些变量。诸如“这个变量的当前值是什么?”之类的问题。或“它的目的是什么?”变得更难回答。
此外,您更倾向于将变量重用于多个目的。这不仅令人困惑,而且危险!值可能会从第一次使用“泄漏”到第二次使用。这可能会导致细微的,难以调试的问题。
答案 1 :(得分:4)
嘿,这实际上是一个有效的观点。 JSLint完全构建在意见上,而不是神的话语。我个人认为JSLint是迟钝的。但是这个敏感话题的意见可能会有所不同 - 破坏,45秒前
但是,一般的好习惯是在一个地方声明所有变量,在它们所在的功能块的开头:
function doSomething() {
var a, b, c, d;
a = 1;
c = 10;
for( b = a; b < c; b++) {
d = b*2 + a-c;
alert(d);
}
}
答案 2 :(得分:-1)
因为在for循环中创建一个条形会创建一个全局变量。这是JavaScript做的事情之一,大多数人都没有意识到。如果你不这样做,你或其他人在该函数或全局范围内创建相同的var,那么我的朋友将成为着名的JavaScript脚枪之一。