jsLint 预期
Posted
技术标签:
【中文标题】jsLint 预期【英文标题】:jsLint Expected 【发布时间】:2012-03-30 05:28:56 【问题描述】:鉴于以下
for(var i=0; i< data.cats.length; i++) list += buildCategories(data.cats[i]);
jsLint 告诉我
Expected '' and instead saw 'list'.
使用较短的符号而不是用花括号括起来有实际的缺点吗?
【问题讨论】:
如果您确定不想进行该检查,则只需提供"curly":false,
即可更改提示配置
【参考方案1】:
这是一种防御性编程 - 使用大括号清楚地定义了哪些语句打算与 for
关联。
如果您不使用大括号,稍后有人可能会错误地在 list += buildCategories...
下添加另一个语句,期望它也与 for
循环一起执行。
【讨论】:
我不同意 Crockford 的所有风格规则,但我 100% 同意这一点。 这对我来说很烦人,因为我使用了 for-if。for(var k in obj) if (obj.hasOwnProperty(k)) ...
(或与其他过滤器一起使用)非常非常有用,但该模式会引发此警告。我认为这和else if
一样合法(否则需要大括号)
我正在调试别人的几千行代码,所以我没有决定是否使用“正确样式”的奢侈。当然可以很好地抑制这些错误,特别是因为一旦遇到 JSLint 就不会继续......
@Fábiosantos jslint 还抱怨else if
并要求您将其更改为else if
@bluesmoon 你没有错吗?我刚刚检查过,它没有抱怨。【参考方案2】:
“使用较短的符号有实际的缺点吗...”
如果您对编码不小心,这可能是错误的根源,但忽略它们可以提供更清晰的 IMO 代码,并且如果您遵守一致且经过深思熟虑的编程标准,那么忽略它们将不是问题。
例如,当我嵌套了 if/else
语句,而这些语句本来可以排除大括号时,我更喜欢平衡 else
s 而不是使用大括号。
if (condition)
if (condition2)
inner_if()
else ;
else
outer_if()
那个代码仍然比这个 IMO 更干净......
if (condition)
if (condition2)
inner_if();
else
outer_if();
如果有人可以在if
或else
中添加另一个语句,那么这是一个需要解决的理解问题。
所以实际上这只是使用什么标准的问题。利用花括号当然是一种有效的选择,但我们不应该对此过于教条。
如果您想要更可配置的工具,可以考虑使用jsHint.com。
【讨论】:
@AdamRackis:我所有的答案现在都是 CW。我想我只是更喜欢这种方式。 厌倦了代表竞赛,嗯? :) @AdamRackis:是的,现在我在这里拥有一套很好的特权,我并不真正关心代表。我宁愿 CW 它,如果他们愿意,让其他人对增加价值感到更自在。 这真的很酷。唯一的其他特权是 20K,这只是删除内容的扩展能力。所以你已经很充分了。 @AdamRackis:是的,这么大的力量可能只会让我头疼。 ;)【参考方案3】:JSLint 检查是否遵循良好的代码风格。插入花括号总是很好的风格,因为代码所属的位置很明显。并且它更短并不是一个真正的论点,因为大多数缩小器无论如何都会照顾到这一点。
【讨论】:
以上是关于jsLint 预期的主要内容,如果未能解决你的问题,请参考以下文章
禁止显示“预期为 '===' 而看到的是 '=='。” jslint中的错误
jslint 错误 - #1 预期为 '(end)' 而看到的是 '<!'
jslint:如何抑制'预期的'Object.create(null)',而是看到'新对象'。警告?
JSLint 错误:“预期在 EOF 处换行”,与 Beautify 插件冲突