我曾经听说,在一行语句中使用花括号对JavaScript是有害的。我不记得推理了,谷歌搜索也没有多大帮助。
在JavaScript中,把所有语句都用大括号括起来是一个好主意吗?
我这么问,因为似乎每个人都这么做。
我曾经听说,在一行语句中使用花括号对JavaScript是有害的。我不记得推理了,谷歌搜索也没有多大帮助。
在JavaScript中,把所有语句都用大括号括起来是一个好主意吗?
我这么问,因为似乎每个人都这么做。
当前回答
在一行语句上使用花括号是没有编程理由的。
这只取决于程序员的偏好和可读性。
您的代码不会因此而崩溃。
其他回答
语句的开始缩进级别应该等于它上面的开大括号的数量。(不包括引号或注释大括号或预处理器指令中的大括号)
否则,K&R将是很好的缩进样式。为了修复它们的风格,我建议在一行中放置简短的if语句。
if (foo) bar(); // I like this. It's also consistent with Python FWIW
而不是
if (foo)
bar(); // not so good
如果我正在编写一个编辑器,我会让它的自动格式按钮将bar吸到与foo相同的行,并且如果你在bar之前按下return,我会让它在bar周围插入括号:
if (foo) {
bar(); // better
}
然后,在if语句的主体中在bar的上方或下方添加新语句就很容易且一致了
if (foo) {
bar(); // consistent
baz(); // easy to read and maintain
}
总是发现
if(valid) return;
对我的眼睛来说比
if(valid) {
return;
}
还有条件的,比如
(valid) ? ifTrue() : ifFalse();
(我个人的观点)是否更容易阅读
if(valid) {
ifTrue();
} else {
ifFalse();
}
但我想这归结于编码风格
No, curly braces are not necessary, However, one very important reason to use the curly brace syntax is that, without it, there are several debuggers that will not stop on the line inside the if statement. So it may be difficult to know whether the code inside the if statement ran without altering the code (some kind of logging/output statements). This is particularly a problem when using commas to add multiple lines of execution. Without adding specific logging, it may be difficult to see what actually ran, or where a particular problem is. My advice is to always use curly braces.
这个问题问的是一行中的语句。然而,提供的许多示例说明了不要基于多行语句省略大括号的理由。在一行中不使用括号是完全安全的,如果这是您喜欢的编码风格的话。
例如,问题问这样做是否可以:
if (condition) statement;
它不会问这是否ok:
if (condition)
statement;
我认为去掉括号更可取,因为它使代码更具可读性,语法更少。
我的编码风格是永远不用括号,除非代码是一个块。不要在一行上使用多个语句(用分号分隔)。我发现这很容易阅读和清楚,从来没有“if”语句的范围问题。因此,在单个if条件语句上使用括号需要3行。是这样的:
if (condition) {
statement;
}
使用一行if语句更可取,因为它使用的垂直空间更少,代码更紧凑。
我不会强迫其他人使用这种方法,但它对我来说是有效的,我非常不同意所提供的关于省略括号如何导致编码/范围错误的例子。
有很多好的答案,所以我不会重复,除了说我的“规则”时,大括号可以省略:条件'返回'或'抛出'(例如)作为他们的唯一声明。在这种情况下,流控制已经清楚地表明它正在终止:
由于终止流控制,即使是“坏情况”也可以快速识别(并修复)。这个概念/结构“规则”也适用于许多语言。
if (x)
return y;
always();
当然,这也是为什么人们可能会使用linter..