我想知道是否在JavaScript中的數組後面的逗號是否有效?javaScript:逗號可以在數組中的最後一組值之後出現嗎?
var settings = {
'foo' : oof,
'bar' : rab,
};
VS
var settings = {
'foo' : oof,
'bar' : rab
};
注意第二個例子不具有的最後一個鍵/值後加上逗號。
我想知道是否在JavaScript中的數組後面的逗號是否有效?javaScript:逗號可以在數組中的最後一組值之後出現嗎?
var settings = {
'foo' : oof,
'bar' : rab,
};
VS
var settings = {
'foo' : oof,
'bar' : rab
};
注意第二個例子不具有的最後一個鍵/值後加上逗號。
大多數瀏覽器和實現都允許使用尾隨逗號,大的但是是 「Internet Explorer」。
大多數InternetExplorer版本中的尾隨逗號導致大麻煩。它會扔奇怪,瘋狂,奇怪和不合理錯誤 ..你不知道你在哪裏!這是可怕的,你會陷入深和嚴重窪地。這種疾病也有一個名字,叫做「厄運的惡名」,它曾被稱爲。
結論:從來沒有。永遠!在Javascript中使用尾隨逗號。
很好地利用戲劇和誇張+1 – meouw
我可能是一個戲劇女王:-P – jAndy
謝謝jAndy,我現在知道'ecod'。它在語義上是不正確的,還是隻是在ie中的錯誤? – superUntitled
從歷史上講,定義對象文本時ES3沒有允許尾隨逗號。這確實是IE做得對的一件事,但大多數其他bowser供應商都違背了規範並允許它反正。因此從技術上講爲在支持它的其他瀏覽器的錯誤。在ES3,一個ObjectLiteral
被定義爲,
ObjectLiteral { } { PropertyNameAndValueList }
後來ES5通過與廣大去,並通過把它在規範合法化後面的逗號解決了這個問題。現將ObjectLiteral
定義爲:
ObjectLiteral { } { PropertyNameAndValueList } { PropertyNameAndValueList , }
注意尾部的逗號。
雖然尾隨逗號在對象常量限定,但它仍然不是JSON根據ES5允許的。因此,雖然下面的對象字面是有效的,
{ foo: "bar", }
以下JSON是不是,
'{ "foo": "bar", }'
的一個JSONObject的語法,
JSONObject { } { JSONMemberList } JSONMemberList JSONMember JSONMemberList , JSONMember JSONMember JSONString : JSONValue
總之,如果你不不要擔心規範或瀏覽器怪癖,那麼不要添加尾隨逗號。
標誌.. IE總是會被指責,即使它做的事情:(:( – Guanlun
至於對象文本至少(這個問題的標題提到陣,但例子是一個對象字面),這取決於您的JS運行。對象文字中的尾隨逗號在ES5中有效。雖然拖尾逗號可能會導致網絡上出現問題(在IE中),但大多數縮略詞會將其刪除。
推薦(1)標題變化到「......中的物體或陣列」和(2)額外的示例在一個陣列字面尾隨逗號。 'var array_literal = ['foo','bar',];' –
這個問題提供了有關IE支持的信息:[Internet Explorer 9是否在數組和對象文字結尾附加逗號?](https:// stackoverflow .com/questions/5036618/does-internet-explorer-9-choke-on-extra-commas-at-the-end-of-array-and-object-li) - 簡而言之,如果你只支持IE9 +你可以使用尾隨逗號。 –