जेएसओएन कुंजी उद्धरणों में क्यों होना चाहिए, इस बारे में वास्तविक कारण ईसीएमएस्क्रिप्ट 3 के पहचानकर्ताओं के अर्थशास्त्र में निर्भर करता है।
({function: 0}) // SyntaxError
({if: 0}) // SyntaxError
({true: 0}) // SyntaxError
// etc...
जबकि अगर आप उद्धरण चिह्नों का उपयोग संपत्ति नाम मान्य हैं:
({"function": 0}) // Ok
({"if": 0}) // Ok
({"true": 0}) // Ok
खुद Crockford
Reserved words उदाहरण के लिए, संपत्ति के नाम उद्धरण चिह्नों के बिना वस्तु Literals में के रूप में इस्तेमाल नहीं किया जा सकता इसे this talk में बताते हैं, वे JSON मानक को सरल रखना चाहते थे, और वे उन सभी अर्थपूर्ण प्रतिबंधों को पसंद नहीं करना चाहते:
....
जब हम गैर उद्धृत नाम समस्या पाया गया कि। यह ईसीएमए स्क्रिप्ट 3 में एक सनकी आरक्षित शब्द नीति है। आरक्षित शब्द कुंजी स्थिति में उद्धृत होना चाहिए, जो वास्तव में एक उपद्रव है। जब मुझे मानक में इसे बनाने के लिए मिल गया, तो मैं मानक मानक, में आरक्षित शब्दों को रखना नहीं चाहता था क्योंकि यह वास्तव में बेवकूफ दिखता था।
समय में, मैं लोगों को समझाने के लिए कोशिश कर रहा था: हाँ, आप जावास्क्रिप्ट में एप्लिकेशन लिख सकते हैं, यह वास्तव में काम करने के लिए जा रहा है और यह एक अच्छा भाषा है। मैं एक ही समय में कहना नहीं चाहता था: और इस पर वास्तव में बेवकूफ चीज देखें! इसलिए मैंने का निर्णय लिया, इसके बजाय, चलिए बस कुंजी उद्धृत करें।
इस तरह, हमें किसी को यह बताएं कि यह कितना है।
यही कारण है कि, इस दिन, कुंजियों को JSON में उद्धृत किया गया है।
...
ECMAScript 5 वें संस्करण स्टैंडर्ड पर यह समस्या नहीं, अब एक ES5 कार्यान्वयन में, यहां तक कि आरक्षित शब्द उद्धरण चिह्नों के बिना, दोनों में इस्तेमाल किया जा सकता, वस्तु शाब्दिक और सदस्य एक्सेस (obj.function
ES5 में ठीक है) ।
बस रिकार्ड के लिए, इस मानक सॉफ्टवेयर विक्रेताओं द्वारा इन दिनों लागू किया जा रहा है, तो आप देख सकते हैं कि ब्राउज़रों इस सुविधा पर इस compatibility table
"क्यों इसे सही करने के लिए परेशान?" यह आलसी सोच की तरह है जो अवैध मार्कअप के साथ लगी वेबसाइटों की ओर जाता है। कुछ ब्राउज़र * के लिए आपके कोड को भविष्य-सबूत * डबल कोट्स की आवश्यकता होती है। – meagar
"इसे सही करने के लिए परेशान क्यों?"- एक सम्मेलन का पालन करने के लिए परेशान क्यों है कि कोई और लाभ नहीं है, अगर कोई वास्तविक लाभ नहीं है? शायद आप व्यावहारिकता के साथ आलसी सोच को भ्रमित करते हैं। –
@ मार्क -" कोई और नहीं करता "... आपको यह विचार कहां मिला? ** ** ** ** में निर्मित जेएसओएन सीरियलाइज़र उचित उद्धरण करता है। –