2014-12-03 32 views
1

大量的開發人員知道定義變量時,它是確定使用逗號分隔像這樣:在語句之間使用逗號是否安全?

var a = 1, 
    b = 2, 
    c = 3; 

但編寫簡單的語句時,是安全的只使用一個逗號,而不是分號的?

var a, b, c; 

a = 1, // instead of a = 1; 
b = 2, // b = 2; 
c = 3; // c = 3; 

當我在瀏覽器中測試,它工作正常。但我似乎無法在任何地方找到這種用法。這是不好的做法嗎?

+0

這有點令人困惑。但是,您可以像這樣編寫代碼,逗號運算符'''允許。但爲什麼? 'var a = getInfo(),renderInfo(a),alert('123')'。 – dfsq 2014-12-03 10:09:45

回答

1

semicolon在JavaScript語句的末尾是不需要的,就像在C,C++,C#,Java等語言中需要的那樣。然而,這是一個很好的做法,我們在這個語句中放置了一個分號是由於我們中許多人已經習慣用上述語言編寫應用程序的習慣)。在使用,在隨後結束的聲明,儘管它工作在JavaScript另一方面,它帶來了一些混亂。話雖如此,我認爲這是一個不好的做法。

0

我沒有看到它的問題,可能比開發商混淆誰審查,並可能會認爲這是一個聲明語句,改變的東西,但不知道爲什麼它不工作等。但任何良好的linter程序都會遇到這樣的問題,當然單元測試會抓住所有問題。

就個人而言,我不這樣做了,我喜歡老式的(C)

var a, b, c; 
a = 1; 
b = 2; 
c = 3; 

但我覺得這只是個人喜好。我總是在我的東西運行的JSLint/jshint並擁有廣泛的單元測試,所以....

1

命令式編程語言使聲明表達,這大致相當於句子和羣體像英文自然語言之間的區別。這個:

a = 1, b = 1; 

是一個由逗號分隔的兩個表達式組成的語句。在英語中,這聽起來像

A cat has a bat, a pig has a wig. 

在另一邊,這

a = 1; b = 1; 

是兩個語句,並會在英語兩句話:

A cat has a bat. A pig has a wig. 

在這個簡單的例子差異可以忽略不計,但通常你應該用句子表達自己,而不是用逗號分隔的句子把所有的東西聚集在一起。在某些時候,它會變得非常愚蠢:

藝術家是美的事物的創造者,揭示藝術與隱瞞藝術家是藝術的宗旨,批評家是誰,他可以翻譯成另一種方式或新物質上他對美麗事物的印象最高,批評的最低形式是自傳的一種模式,那些在美麗的事物中發現醜陋意義的人是腐敗而不迷人的,這是一種錯誤。

相關問題