2014-03-26 25 views
-2

我偶尔会看到(在堆栈溢出时)在if语句的else子句中省略大括号的代码片段,年),这是无效的,所有我最近的研究都支持这种观点,并且我已经将它们编辑回我想要使用自己的代码片段的地方为什么if(condition){statements} else return;“在Chrome中工作

然后一年之前,没有集中太多我重新使用从堆栈溢出的代码段如何有效地从href.location中提取查询字符串参数(没有我注意到它)结束.... else返回;即没有大括号附近的else子句

这工作正常两个杉木efox chrome和safari,但我不知道为什么。

同时,我意识到else if子句实际上是一个else,后跟一个没有大括号的if语句。这是相同的逻辑,你实际上并不需要一个单独的子句语句括号?

+1

从“if”语句中省略括号一直是单行语句的有效语法。 – James

+0

您将不得不向我们展示您所指的代码片段。告诉我们你认为无效的那个,以及你喜欢的那个。另外,它在哪些浏览器中工作?哪些浏览器不起作用? –

+0

在条件仅适用于单行的情况下,Ommitting括号完全有效。这不是我通常推荐的一种好习惯,但它是有效的,而且一直都是如此。 – Spudley

回答

2

只有当您提供超过1个命令时才需要块。

if(condition) 
    command; 
else 
    command2; 
////////////////////////// 
if(condition){ 
    command; 
} else 
    command2; 
////////////////////////// 
if(condition){ 
    command1; 
    command2; 
} else command1; 
1

你可以跳过大括号,因为这里只有一条语句

0

表达

if (condition) 
    single_statement; 
else 
    single_statement; 

,它都ifelse零件后{...}的组合是JavaScript语言的一部分。

0

js和大多数语言中的所有条件语句控制是否执行下一个“thing”,可能是语句(例如return)或块(例如{// code})。

0

它们仅用于多行命令。因此,是否将它们用于单行命令是个人偏好。

我自己总是使用大括号,即使在单行命令中。它提高了我为这种小型工作的可读性,不值得把它们排除在外。

0

我不知道你在哪里看,但标准是对这个问题很清楚:

Section 12.5

IfStatement : 
    if (Expression) Statement else Statement 
    if (Expression) Statement

其中Statement定义一个level up

Statement : 
    Block 
    VariableStatement 
    EmptyStatement 
    ExpressionStatement 
    IfStatement 
    IterationStatement 
    ContinueStatement 
    BreakStatement 
    ReturnStatement 
    WithStatement 
    LabelledStatement 
    SwitchStatement 
    ThrowStatement 
    TryStatement 
    DebuggerStatement