2

我不记得 if 语句的规则,所以我查看了第 12.5 条,但我仍然不清楚是否需要大括号。所以,我问,在 Ecmascript 5.1 的什么地方提到了 if 语句中没有左花括号是可以接受的?

4

1 回答 1

5

这是第 12.5 节中的 if 语句的语法:

IfStatement : 
     if (表达式)语句else语句 
    if (表达式)语句

从外观上看,不需要花括号,但我们需要弄清楚语句到底是什么。此语法可在第 12 节中找到。

陈述 :
    堵塞
    变量语句
    空语句
    表达式语句
    如果语句
    迭代语句
    继续声明
    断句
    退货声明
    带声明
    标签声明
    开关语句
    抛出语句
    尝试语句
    调试器语句

如果我们更深入地研究 12.1 节,我们会发现块语句的定义。

块: 
     { StatementList opt  } 

我们找到了花括号,但这是否意味着它们是必需的?答案是不。在检查语句的语法时,冒号后面的每个元素都被认为是一个语句,因此是 if 语句语法的有效部分。以下是有效 if 语句的实际示例。

// if ( Expression ) ReturnStatement
if (true) 
    return false;

// if ( Expression ) Block
if (true) {
    return false;
}

// if ( Expression ) TryStatement
if (true) try {
    return false;
} catch (e) {
    return e;
}

// if ( Expression ) EmptyStatement
if (true) ;

// if ( Expression ) IfStatement
if (true)
    if (false)
        return false;
于 2012-08-24T05:02:58.653 回答