我曾经听说,在一行语句中使用花括号对JavaScript是有害的。我不记得推理了,谷歌搜索也没有多大帮助。
在JavaScript中,把所有语句都用大括号括起来是一个好主意吗?
我这么问,因为似乎每个人都这么做。
我曾经听说,在一行语句中使用花括号对JavaScript是有害的。我不记得推理了,谷歌搜索也没有多大帮助。
在JavaScript中,把所有语句都用大括号括起来是一个好主意吗?
我这么问,因为似乎每个人都这么做。
当前回答
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.
其他回答
语句的开始缩进级别应该等于它上面的开大括号的数量。(不包括引号或注释大括号或预处理器指令中的大括号)
否则,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 (x)
return y;
always();
当然,这也是为什么人们可能会使用linter..
我在一个类似的经历中找到了这个答案,所以我决定用我的经历来回答它。
无括号语句在大多数浏览器中都可以工作,然而,我测试了无括号方法实际上在某些浏览器中不起作用。
截至2018年2月26日,该声明在苍白的月亮,但不是谷歌Chrome。
function foo()
return bar;
总是发现
if(valid) return;
对我的眼睛来说比
if(valid) {
return;
}
还有条件的,比如
(valid) ? ifTrue() : ifFalse();
(我个人的观点)是否更容易阅读
if(valid) {
ifTrue();
} else {
ifFalse();
}
但我想这归结于编码风格
有一种方法可以实现多行非花括号if语句。(哇,多英语啊..)但是有点乏味:
if(true)
funcName();
else
return null;
function funcName(){
//Do Stuff Here...
}