2013-03-28 119 views
-1

目前,我聲明瞭函數在PHP這樣的:我可以在函數聲明中省略花括號嗎?

function theFunction($theVar) { 
    ... 
} 

而在JavaScript中,如:

function theFunction(theVar) { 
    ... 
} 

我可以省略花括號當函數只包含一個行?像:

function theFunction($theVar) 
    doSomething(); 

和:

function theFunction(theVar) 
    doSomething(); 
+9

嘗試看看會發生什麼會更快 – Crisp

+0

否:http://www.php.net/manual/en/functions.user-defined.php – Quasdunk

+0

沒有。你可以像循環和if/else語句那樣做,但不是函數定義 –

回答

2

據我所知,這是任何一種語言都不允許的。

它們都允許它用於單語句if() s和循環,但不適用於函數(在PHP的情況下,不適用於類)。

但即使它被允許,我強烈建議不要這樣做;大括號是有原因的,以幫助可讀性和避免含糊不清。我建議始終將它們用於if() s,並出於同樣的原因進行循環,即使它們並非嚴格要求。

像Python這樣的語言沒有大括號,因爲它們有非常嚴格的縮進規則。沒有這些規則,語言需要花括號(或其他塊標記);如果你不使用它們,那麼你的代碼就會冒很大的風險,導致你的代碼出現邏輯錯誤。

+0

好答案! +1:「但即使允許,我也強烈建議不要......」 – hek2mgl

3

號是必需的花括號。 (嘗試一下,看看自己)。

+0

@CamilStaps你是什麼意思?該代碼在Chrome中出現錯誤。 – 0x499602D2

+0

@大衛我在Firefox上,看到這裏:http://stackoverflow.com/questions/15682825/may-i-omit-curly-braces-in-a-function-declaration?noredirect=1#comment22264463_15682888 – Keelan

+0

@CamilStaps這是一個Firefox擴展。 – 0x499602D2

0

不,函數聲明需要一個塊,而不管main語句如何被包含。

function f() 
    console.log(x); // error: unexpected identifier 
1

不,PHP和JS都不支持這種聲明。由於某些原因,trycatch塊也是如此,即使條件語句和循環語句沒有,塊也總是需要大括號。

+1

看來,JS確實工作:http://jsfiddle.net/MZhaJ/ – Keelan

+1

@CamilStaps,您使用的瀏覽器?我在Chrome上,除非添加大括號,否則代碼段不會執行任何操作。 – Impworks

+0

啊,我在Firefox上。這解釋了。 – Keelan

相關問題