千杯不醉的消炎药 · 参数配置-雷克萨斯RX PHEV· 1 年前 · |
豪情万千的回锅肉 · 我死心后霸总哭着求我复合 - 知乎· 1 年前 · |
会开车的烈马 · 奥迪A6 e-tron谍照曝光 ...· 1 年前 · |
坚强的遥控器 · 所有明亮的地方(美国2020年布莱特·哈利执 ...· 1 年前 · |
天涯 · 你必读的 RSS 订阅源有哪些? - 知乎· 1 年前 · |
我曾经听说,在一行语句中留下大括号在JavaScript中可能是有害的。我已经不记得是怎么回事了,用谷歌搜索一下也没什么用。
在JavaScript中,将所有语句放在大括号中是个好主意吗?
我在问,因为似乎每个人都这样做。
发布于 2011-01-26 02:25:21
有一个可读性的方面--当你有复合语句时,它可能会变得非常混乱。缩进有帮助,但对编译器/解释器没有任何意义。
var a;
var b;
var c;
//Indenting is clear
if (a===true)
alert(a); //Only on IF
alert(b); //Always
//Indenting is bad
if (a===true)
alert(a); //Only on IF
alert(b); //Always but expected?
//Nested indenting is clear
if (a===true)
if (b===true)
alert(a); //Only on if-if
alert (b); //Always
//Nested indenting is misleading
if (a===true)
if (b===true)
alert(a); //Only on if-if
alert (b); //Always but expected as part of first if?
//Compound line is misleading
//b will always alert, but suggests it's part of if
if (a===true) alert(a);alert(b);
else alert(c); //Error, else isn't attached
此外,还有一个可扩展性方面:
//Problematic
if (a===true)
alert(a);
alert(b); //We're assuming this will happen with the if but it'll happen always
else //This else is not connected to an if anymore - error
alert(c);
//Obvious
if (a===true) {
alert(a); //on if
alert(b); //on if
} else {
alert(c); //on !if
}
这种想法是这样的:如果您总是使用括号,那么您就知道在该块中插入其他语句。
发布于 2013-01-06 20:41:14
这个问题是关于一行语句的。然而,提供的许多示例说明了不能省略基于多行语句的大括号的原因。在一行中不使用括号是完全安全的,如果这是您喜欢的编码样式。
例如,这个问题会问这是否可以:
if (condition) statement;
它不会询问这是否正常:
if (condition)
statement;
我认为去掉括号更可取,因为它使代码的可读性更好,减少了多余的语法。
我的编码风格是永远不要使用括号,除非代码是一个块。并且永远不要在一行中使用多个语句(用分号分隔)。我发现这很容易阅读和清晰,并且在'if‘语句中不会有作用域问题。因此,在单个if条件语句中使用方括号需要3行代码。如下所示:
if (condition) {
statement;
}
使用一行if语句更可取,因为它使用更少的垂直空间,并且代码更紧凑。
我不会强迫其他人使用这种方法,但它对我很有效,我完全同意所提供的关于省略括号会导致编码/作用域错误的示例。
发布于 2012-03-11 23:02:36
不存在可维护性问题!
你们所有人的问题是到处都是分号。对于多个语句,不需要大括号。如果要添加语句,只需使用逗号。
if (a > 1)
千杯不醉的消炎药 · 参数配置-雷克萨斯RX PHEV 1 年前 |
豪情万千的回锅肉 · 我死心后霸总哭着求我复合 - 知乎 1 年前 |
天涯 · 你必读的 RSS 订阅源有哪些? - 知乎 1 年前 |