2011-01-07 9 views
5

एक्शनस्क्रिप्ट 3 में, जो बेहतर है?जो बेहतर है, एक = [] या एक = नया ऐरे()?

a = [1,2,3]; 

या

a = new Array(1,2,3); 

ऐसा लगता है कि अलग-अलग तर्क के रूप में डेटा के साथ सरणी निर्माता बुला धीमी होगी और अन्य विधि प्रत्यक्ष स्मृति प्रति किसी प्रकार का हो सकता है कि।

क्या आप जानते हैं कि ज्यादातर मामलों में उपयोग करना बेहतर है, और क्यों?

उत्तर

8

मैं स्क्वायर ब्रैकेट पसंद करता हूं क्योंकि यह एक संक्षिप्त और आसानी से पढ़ा जाने वाला वाक्यविन्यास है।

बाद वाला वाक्यविन्यास वास्तव में थोड़ा धीमा हो जाएगा, क्योंकि आप Array = function() { ... }; करके डिफ़ॉल्ट सरणी कन्स्ट्रक्टर को प्रतिस्थापित कर सकते हैं - कम से कम अधिकांश ईसीएमएस्क्रिप्ट संस्करणों में यह काम करता है। इसलिए उस फॉर्म का उपयोग करने के लिए वैश्विक Array फ़ंक्शन को पहले देखा जाना चाहिए।

+0

दिलचस्प। व्यक्तिगत रूप से, मुझे लगता है कि नया ऐरे (तर्क) पढ़ने के लिए आसान है। – TheDarkIn1978

+0

मुझे यह अनावश्यक रूप से वर्बोज़ और विचलित लगता है। कौन सा कारण है कि मैं बेसिक-व्युत्पन्न भाषाओं का शौक नहीं हूं। – cdhowie

5

एक ऐरे लिटलल का उपयोग करना (var a: Array = []) हमेशा नए ऐरे() कहने से तेज़ होने जा रहा है, और मुझे विश्वास है कि यह एक सर्वोत्तम अभ्यास माना जाता है।

7

मैं भ्रम से बचने के लिए लगभग सभी मामलों के लिए स्क्वायर ब्रैकेट पसंद करता हूं।

सरणी निर्माता 2 रूप हैं:

  • Array(...)
  • Array(size:int)

प्रथम रूप बनाता है और मूल्यों के रूप में सूचीबद्ध मानकों के साथ सरणी, और दूसरा रूप है कि के साथ एक सरणी बनाता है तत्वों की संख्या। यह सब अच्छा है जब तक आप एक ही पूर्णांक के साथ एक सरणी को प्रारंभ करना चाहते हैं:

  • new Array() => []
  • new Array("foo") => ["foo"]
  • new Array("foo", "bar") => ["foo", "bar"]
  • new Array(42,43) => [42,43]
  • new Array(42) => [undefined, ...undefined x 40..., undefined]

विसंगति मुझे एक जोड़े को थोड़ा यही कारण है कि इससे पहले कि मैंने सिर्फ ऐरे का उपयोग करना बंद कर दिया था कन्स्ट्रक्टर, अत्यंत दुर्लभ अवसर को छोड़कर जब मैं एन अपरिभाषित तत्वों के साथ एक सरणी चाहता हूं।