ऐतिहासिक रूप से बोलते हुए, ES3 किसी ऑब्जेक्ट को परिभाषित करते समय पिछली कॉमा की अनुमति नहीं दी गई थी। यह एक बात थी कि आईई सही हो गया था, लेकिन अधिकांश अन्य बाउसर विक्रेता spec के खिलाफ चला गया और वैसे भी इसे अनुमति दी। तो तकनीकी रूप से यह अन्य ब्राउज़रों कि यह समर्थित में एक बग था। ES3 में, एक ObjectLiteral
, के रूप में
ObjectLiteral
{ }
{ PropertyNameAndValueList }
बाद ES5 बहुमत के साथ जा रहा है और कल्पना में इसके सामने अनुगामी अल्पविराम को वैध करने से इस समस्या का समाधान हो परिभाषित किया गया था। अब एक ObjectLiteral
के रूप में,
ObjectLiteral
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }
सूचना अंत में अनुगामी अल्पविराम परिभाषित किया गया है। हालांकि
अनुगामी अल्पविराम एक वस्तु शाब्दिक में परिभाषित किया गया है, यह अभी भी ES5 के अनुसार JSON में अनुमति नहीं है। इसलिए जब निम्नलिखित वस्तु शाब्दिक मान्य है,
{ foo: "bar", }
निम्नलिखित JSON नहीं है,
'{ "foo": "bar", }'
एक JSONObject के लिए व्याकरण है,
JSONObject
{ }
{ JSONMemberList }
JSONMemberList
JSONMember
JSONMemberList , JSONMember
JSONMember
JSONString : JSONValue
संक्षेप में, यदि आप डॉन ' टी spec या ब्राउज़र quirks के बारे में चिंता करना चाहते हैं, तो एक पिछला कॉमा नहीं जोड़ें।
(1) के लिए शीर्षक परिवर्तन "... एक वस्तु या सरणी में" और शाब्दिक शृंखला में पीछे अल्पविराम के साथ (2) अतिरिक्त उदाहरण सुझाएँ। 'var array_literal = ['foo', 'bar',];' –
यह प्रश्न आईई समर्थन के बारे में जानकारी प्रदान करता है: [क्या इंटरनेट एक्सप्लोरर 9 सरणी और ऑब्जेक्ट अक्षर के अंत में अतिरिक्त कॉमा पर चकित करता है?] (https: // stackoverflow .com/प्रश्न/5036618/करता-इंटरनेट-एक्सप्लोरर-9-चोक-ऑन-अतिरिक्त-अल्पविराम-पर-अंत-ऑफ-एंड-ऑब्जेक्ट-ली) - संक्षेप में, यदि आप केवल IE9 + का समर्थन करते हैं, आप पिछली कॉमा का उपयोग कर सकते हैं। –