में सरणी की चाबियों के रूप में स्ट्रिंग्स स्ट्रिंग का उपयोग सरणी की चाबियों के रूप में क्यों करते हैं, कंसोल इन घोषित मानों के बिना सरणी दिखा रहा है और इस मानों के पुनरावृत्ति के दौरान जहां कुंजी स्ट्रिंग प्रदर्शित नहीं होती हैं? , हालांकि मैं उनके मूल्य प्राप्त कर सकते हैं।जावास्क्रिप्ट
>> var arr = [ 0, 1, 2, 3 ];
undefined
>> arr["something"] = "aught";
"aught"
>> arr
[0, 1, 2, 3]
>> arr["something"]
"aught"
>> for(var i = arr.length; i--; console.log(arr[ i ]));
3
2
1
0
मैं समझता हूँ कि सरणियों वस्तुओं जो जावास्क्रिप्ट के इंजन में 'की गणना' इंटरफेस किसी तरह लागू किया गया है कर रहे हैं। सबसे दिलचस्प बात यह है कि दुभाषिया या तो चेतावनी या त्रुटि फेंक नहीं रहा है, इसलिए मैंने कुछ समय बिताया कि डेटा कहां खोया जा सकता है। मैं अब, मैं गलत था और मैं {}
@बुडुबा, क्योंकि इसमें कुछ भी गलत नहीं है :-) आपका कोड पूरी तरह से मान्य जावास्क्रिप्ट है। यह पाठक के लिए संदिग्ध है क्योंकि आप 2 प्रकार के सरणी मिश्रण कर रहे हैं लेकिन यह मान्य है। आप दुभाषिया को यह इंगित करना चाहते हैं कि कुछ भी गलत होने पर कुछ गलत है। –
यह ज्यादातर शब्दावली मुद्दा है, लेकिन जावास्क्रिप्ट आमतौर पर '{}' एक सहयोगी सरणी नहीं कहता है। वे इसे एक वस्तु कहते हैं जिसमें गुण होते हैं। क्या अधिकांश लोग इस बात से सहमत नहीं हैं कि जावास्क्रिप्ट ऑब्जेक्ट को एक सहयोगी सरणी कहकर चीजों को भ्रमित नहीं करना सबसे अच्छा है? – jfriend00
नोट: यदि आप '' object.defineProperty.call (arr, 'something', 'aught') जैसे सरणी पर 'defineProperty'' का उपयोग करने का प्रयास करते हैं, तो यह एक त्रुटि फेंक देगा। – David