首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript的一行语句中是否需要大括号?

在JavaScript的一行语句中是否需要大括号?
EN

Stack Overflow用户
提问于 2011-01-26 02:17:14
回答 15查看 110.6K关注 0票数 197

我曾经听说,在一行语句中留下大括号在JavaScript中可能是有害的。我已经不记得是怎么回事了,用谷歌搜索一下也没什么用。

在JavaScript中,将所有语句放在大括号中是个好主意吗?

我在问,因为似乎每个人都这样做。

EN

回答 15

Stack Overflow用户

发布于 2011-01-26 02:25:21

有一个可读性的方面--当你有复合语句时,它可能会变得非常混乱。缩进有帮助,但对编译器/解释器没有任何意义。

代码语言:javascript
运行
复制
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

此外,还有一个可扩展性方面:

代码语言:javascript
运行
复制
//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
} 

这种想法是这样的:如果您总是使用括号,那么您就知道在该块中插入其他语句。

票数 104
EN

Stack Overflow用户

发布于 2013-01-06 20:41:14

这个问题是关于一行语句的。然而,提供的许多示例说明了不能省略基于多行语句的大括号的原因。在一行中不使用括号是完全安全的,如果这是您喜欢的编码样式。

例如,这个问题会问这是否可以:

代码语言:javascript
运行
复制
 if (condition) statement;

它不会询问这是否正常:

代码语言:javascript
运行
复制
 if (condition)
   statement;

我认为去掉括号更可取,因为它使代码的可读性更好,减少了多余的语法。

我的编码风格是永远不要使用括号,除非代码是一个块。并且永远不要在一行中使用多个语句(用分号分隔)。我发现这很容易阅读和清晰,并且在'if‘语句中不会有作用域问题。因此,在单个if条件语句中使用方括号需要3行代码。如下所示:

代码语言:javascript
运行
复制
 if (condition) {
   statement;
 }

使用一行if语句更可取,因为它使用更少的垂直空间,并且代码更紧凑。

我不会强迫其他人使用这种方法,但它对我很有效,我完全同意所提供的关于省略括号会导致编码/作用域错误的示例。

票数 69
EN

Stack Overflow用户

发布于 2012-03-11 23:02:36

不存在可维护性问题!

你们所有人的问题是到处都是分号。对于多个语句,不需要大括号。如果要添加语句,只需使用逗号。

代码语言:javascript
运行
复制
if (a > 1)
 alert("foo"),
 alert("bar"),
 alert("lorem"),
 alert("ipsum");
else
 alert("blah");

这是有效的代码,可以像你期望的那样运行!

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4797286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档