jsLint预期{

dar*_*ten 7 javascript coding-style jslint

鉴于以下内容

for(var i=0; i< data.cats.length; i++) list += buildCategories(data.cats[i]);
Run Code Online (Sandbox Code Playgroud)

jsLint告诉我

Expected '{' and instead saw 'list'.
Run Code Online (Sandbox Code Playgroud)

使用较短的符号而不是将它包裹在花括号中是否有一个实际的缺点?

Red*_*ter 14

它是防御性编程 - 使用大括号清楚地定义了哪些语句与之相关联for.

如果你不使用大括号,稍后有人可能错误地在下面添加另一个语句,list += buildCategories...期望它也可以用for循环执行.

  • 我不同意克罗克福德的所有风格规则,但我对这个规则是100%的. (9认同)

小智 7

"使用较短的符号是否有实际的缺点..."

如果您不小心编码,它可能是错误的根源,但省略它们可以提供更清晰的代码IMO,如果您遵循一致且经过深思熟虑的编程标准,省略它们将不会成为问题.

例如,当我有嵌套if/else语句,否则能够排除大括号时,我更喜欢else使用大括号来平衡s.

if (condition)
    if (condition2)
        inner_if()
    else ;
else
    outer_if()
Run Code Online (Sandbox Code Playgroud)

该代码仍然比这个IMO更干净......

if (condition) {
    if (condition2) {
        inner_if();
    }
} else {
    outer_if();
}
Run Code Online (Sandbox Code Playgroud)

如果某些事情他们可以添加另一个声明,if或者else那是一个需要修复的理解问题.

所以,这只是一个使用什么标准的问题.利用花括号肯定是一个有效的选择,但我们不应该太过教条.


如果你想要一个更可配置的工具,你可以考虑使用jsHint.com.

  • @AdamRackis:是的,那么多的力量可能就在我脑海中.;) (2认同)