为什么if(condition){statements} else返回;“在Chrome中工作

时间:2014-03-26 12:56:54

标签: javascript if-statement syntax

我偶尔会看到(在堆栈溢出时)代码片段,它省略了if语句的else子句中的大括号。我曾经想过(多年和多年)这是无效的,我最近的研究都支持这种观点,我已经将它们编辑回我想要自己使用代码片段的地方。

然后一年前,我没有集中精力,重新使用堆栈溢出的一段代码,如何有效地从href.location中提取查询字符串参数(没有我注意到它)结束.... else return;即else条款周围没有括号。

这在Firefox chrome和safari中都运行良好,但我不知道为什么。

同时我意识到else if子句实际上是一个else后跟一个没有大括号的if语句。这是否与您在单个else子句声明中实际上不需要括号的逻辑相同?

6 个答案:

答案 0 :(得分:2)

只有在提供多于1个命令时才需要块。

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

答案 1 :(得分:1)

你可以跳过大括号,因为只有一个陈述

答案 2 :(得分:0)

表达式

if (condition)
    single_statement;
else
    single_statement;

{...}if部分之后与else的组合是JavaScript语言的一部分。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

他们只需要多行命令。因此,个人喜好是否将它们用于单行命令。

我自己总是使用大括号,即使是单行命令。它为我提供了这么小的努力的可读性,它不值得让它们离开。

答案 5 :(得分: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