2014-03-26 35 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