जवाबों:
नहीं, उद्धरणों से कोई फ़र्क नहीं पड़ता है (जब तक कि, जैसा कि आपने उल्लेख किया है, आप एक कुंजी का उपयोग करना चाहते हैं जो एक मान्य जावास्क्रिप्ट पहचानकर्ता नहीं है)।
एक साइड नोट के रूप में, JSON डेटा विनिमय प्रारूप को पहचानकर्ताओं के आसपास दोहरे उद्धरण चिह्नों की आवश्यकता होती है (और एकल उद्धरण की अनुमति नहीं देता है)।
से गैर उद्धृत संपत्ति के नाम / जावास्क्रिप्ट में वस्तु चाबियाँ , मेरे लेख इस विषय पर:
उद्धरण केवल तभी छोड़ा जा सकता है जब संपत्ति का नाम एक संख्यात्मक शाब्दिक या एक मान्य पहचानकर्ता नाम हो ।
[...]
ब्रैकेट नोटेशन का उपयोग सभी संपत्ति नामों के लिए सुरक्षित रूप से किया जा सकता है।
[...]
डॉट नोटेशन का उपयोग केवल तब किया जा सकता है जब संपत्ति का नाम मान्य पहचानकर्ता नाम हो।
ध्यान दें कि आरक्षित शब्दों को ES5 में निर्विवाद संपत्ति के नाम के रूप में उपयोग करने की अनुमति है। हालाँकि, ES3 के साथ पश्चगामी संगतता के लिए, मैं उन्हें वैसे भी उद्धृत करने का सुझाव दूंगा।
मैंने एक उपकरण भी बनाया जो आपको बताएगा कि क्या किसी दिए गए संपत्ति के नाम का उपयोग बिना उद्धरण और / या डॉट नोटेशन के साथ किया जा सकता है। इसे mothereff.in/js-properties पर आज़माएं ।
यहां कोई अंतर नहीं है। बस स्टाइल की बात है। ऐसा करने के कारणों में से एक 'सुपर' या 'क्लास' का उपयोग कुंजी के रूप में किया जा रहा है क्योंकि वे आरक्षित कीवर्ड हैं।
कुछ लोगों को व्हॉट्सएप के साथ एक स्ट्रिंग में पास होने का प्रलोभन दिया जा सकता है, फिर ओ ['मैं व्हॉट्सएप कर सकता हूं'] लेकिन मैं उस बुरे व्यवहार को कहूंगा।
नहीं, जावास्क्रिप्ट के लिए नहीं। हालाँकि, कुछ JSON पार्सर विफल हो जाएंगे जब कुंजियों के आसपास के उद्धरण मौजूद नहीं होंगे।
कुछ स्थितियां ऐसी हैं जहां वे अलग हैं। उदाहरण के लिए, यदि आप jQuery का उपयोग कर रहे हैं, और आप एक तत्व बनाने के लिए jQuery $ () कमांड को कॉल करते समय पारित करने के लिए मापदंडों की एक सूची बना रहे हैं, तो उद्धृत शब्दों को मापदंडों में बदल दिया जाता है, और गैर-उद्धृत शब्दों को फ़ंक्शन में बदल दिया जाता है। उदाहरण के लिए, "आकार" ऑब्जेक्ट का आकार विशेषता निर्धारित करेगा, और आकार (कोई उद्धरण नहीं), ऑब्जेक्ट पर आकार () फ़ंक्शन को कॉल करेगा। नीचे के पास jQuery () देखें :
जबकि दूसरा तर्क सुविधाजनक है, इसके लचीलेपन से अनपेक्षित परिणाम हो सकते हैं (जैसे $ ("
<input>", {size: "4"}) आकार विशेषता सेट करने के बजाय .size () विधि को कॉल करना। पिछले कोड ब्लॉक को इस प्रकार लिखा जा सकता है:
obj = { 12e34: true };रूप में ही नहीं हैobj = { '12e34': true };। पूर्व में आपको उस संपत्ति का उपयोग करने की आवश्यकता होगीobj['1.2e+35'], जबकि बाद के लिए आप उपयोग करेंगेobj['12e34']। अधिक जानकारी के लिए मेरा जवाब देखें।