2012-02-29 22 views
8

在大多數的Node.js庫的人要特別注意最後的關鍵屬性對對象後,除去尾隨逗號:爲什麼要關心Node.js中的尾隨逗號?

var test = { 
    key1: 123, 
    key2: 456, 
    key3: 789 
}; 

這會產生一些麻煩,而編輯代碼,例如要交換最後兩個鍵值對,還必須添加一個逗號並刪除一個。有些人運動逗號下一行,這與最後一個元素解決了這個問題,但也使代碼有點難以閱讀(恕我直言):

var test = { 
     key1: 123 
    , key2: 456 
    , key3: 789 
}; 

在另一方面,據我所知尾隨逗號在JavaScript中僅在一些IE瀏覽器中產生麻煩。所以我想知道是否有任何技術不使用Node.js中的尾隨逗號寫散列? (如下:)

var test = { 
    key1: 123, 
    key2: 456, 
    key3: 789,   
}; 
+2

在這一點上,可能很重要的唯一地方是節點期望實際JSON的地方。例如,在package.json中,不能有尾隨逗號。 – loganfsmyth 2012-02-29 16:36:10

+1

逗號在那裏,因此當您使用咖啡腳本時,您在忽略它們時會更快樂 – mkoryak 2013-06-09 06:09:06

+0

請注意,Node.js cschuff 2018-02-21 09:53:00

回答

5

不,沒有技術上的理由這樣做。

不過,我從來不把後昏迷,只是因爲我覺得它使更清晰的代碼。也許有些人也有網絡開發的習慣,就像你提到的那樣,你需要小心那些因爲IE而導致的習慣。

+0

此外,它顯示了你的代碼中的一些意圖,我們不是爲編譯器編寫代碼,而是爲其他程序員,主要是我們自己。樹立一個好榜樣。 – jcolebrand 2012-02-29 16:03:57

+0

有很多技術上的原因,它被稱爲未來證明你的代碼運行在ES的新版本,其中尾部逗號是一個語法錯誤 – Raynos 2012-02-29 20:26:57

+1

@Raynos你有一個很好的來源呢?我發現矛盾的事情。 [法律](http://www.2ality.com/2011/06/object-literal-comma.html)[非法](http://whereswalden.com/2010/09/08/spidermonkey-json-change-尾隨逗號不再被接受/)[法律](http://css.dzone.com/articles/quick-javascript-tip-trailing) – 2012-02-29 20:50:20

1

首先,我想尾隨逗號是醜陋的,所以我只用他們在必要時(只有一個單一的元素蟒蛇元組) - 領先的逗號甚至醜陋。

除此之外,還有一個原因是從不使用它們:如果你正在編寫的代碼是用於node.js或客戶端的,那麼它可能就是一個不喜歡它們的IE 。

沒有技術理由在node.js中省略他們

1

更新:我已經改變了我對此的立場。我認爲尾隨逗號是很好的,因爲您不必更改兩行來添加屬性,而diff只顯示添加的行。

舊的和錯誤的:

我發現了一個巨大的理由不使用尾隨逗號但它不是專門針對Node.js的

From Johan Sundström

這種格式的好處是差異友好:添加或刪除 屬性或數組成員幾乎從不接觸任何其他線路,但 一個地方的改變實際發生的,而尾隨逗號語法 幾乎總是觸及兩行,以獲得正確的逗號。

相反,改線將永遠不會有什麼對他們無關, 這有助於掃描犯視覺極大。

+18

這不是錯誤的方法嗎?我會說有一個尾隨逗號是更多差異友好,因爲你不必編輯上一行添加一個新的(最後)。這也使得它更容易複製和麪食:) – grahamrhay 2013-09-19 09:50:33

+0

@grahamrhay如果你必須在最後一行後添加一行,你仍然必須添加一個逗號,除非你不符合JSON標準:)因爲我發佈了這一點,我已經決定我更喜歡領先的逗號,因爲它讓我的代碼,Python開發人員,Ruby開發人員和其他人都可讀。對我來說,它現在只是值得分差的好處。 – mkelley33 2013-10-27 03:45:09

+0

@grahamrhay你說得很好。我已經到處看到你的方式。尾隨逗號ftw。 – mkelley33 2017-09-23 18:24:35

0

,我在一個對象字母排序鍵的忠實粉絲。這有很多優點。主要的是兩個相似對象的視覺比較。所有爲JavaScript提供調試支持的現代IDE(我見過)都對這些屬性進行了alpha排序。因此,當您將斷點處的對象與您的代碼進行比較時,它可以讓您更輕鬆。

在對象中的最後一對上有一個尾隨逗號可以很容易地對對象中的對進行排序:選擇所有行並在編輯器中點擊排序鍵。如果最後一對不再是最後一對,則不需要進一步添加/刪除逗號。

我同意所有其他意見,(首先)它使您的代碼「不潔」或醜陋。我發現,在轉移到尾隨逗號後,我很快習慣了它,幾周後我開始喜歡這樣看待它。

作爲人類,我們對自己習以爲常的事情感到最滿意。鑑於我們所看到的大部分代碼都沒有最後一個逗號,這是我們最喜歡的。經過幾個星期的尾隨逗號,你可能會發現你更喜歡那個。你可能會發現它更實用。