2010-03-25 16 views
18

जावास्क्रिप्ट में नए ऐरे() पर [] का उपयोग करने के लाभ

var foo = []; 

var bar = new Array(); 

का उपयोग करने पर

का उपयोग करने के क्या फायदे हैं मुझे नए ऐरे() पर [] का उपयोग करने के लिए कहा गया है लेकिन कभी भी अधिक स्पष्टीकरण

के साथ नहीं

उत्तर

32

के विपरीत [] का उपयोग करने का मुख्य कारण आपके द्वारा पारित तर्क है। जब आप new Array(10) का उपयोग करते हैं, तो आप 10 तत्वों के साथ एक खाली सरणी बनाते हैं, लेकिन जब आप [10] का उपयोग करते हैं, तो आप एक तत्व के साथ एक सरणी बनाते हैं जिसका मूल्य 10 है। चूंकि यह आमतौर पर जानकारी है कि अधिकांश प्रोग्रामर एक सरणी में गुजरना चाहते हैं (जैसे सरणी जावास्क्रिप्ट में गतिशील हैं), इसे आम तौर पर सबसे अच्छा अभ्यास माना जाता है। new Array(10,20)new Array(10) से अलग काम करता है। इस मामले में आपके पास [10,20] जैसा ही प्रभाव है जो 2 तत्वों, 10 और 20 के साथ एक सरणी बनाना है। चूंकि यह ... अजीब है ... new Array() पास करके केवल एक खाली सरणी बनाना आसान है । [] हमेशा एक ही प्रभाव पड़ता है, इसलिए मैं इसके साथ चिपके रहने की भी सिफारिश करता हूं।

+4

+1 मुझे विश्वास है कि यह मुख्य कारण है। अगर मुझे सही याद है, तो [] वाक्यविन्यास पहले जावास्क्रिप्ट कार्यान्वयन में उपलब्ध नहीं था। –

+2

वास्तव में, जावास्क्रिप्ट 1.2 में सरणी और ऑब्जेक्ट अक्षर प्रस्तुत किए गए थे। आईई 4 और नेटस्केप 4 समर्थित सरणी और ऑब्जेक्ट अक्षर दोनों, इसलिए इन दिनों उपयोग करने के लिए दोनों पूरी तरह से सुरक्षित हैं जब तक कि किसी कारण से आपको उन ब्राउज़रों के पुराने संस्करणों को पूरा करने की आवश्यकता नहीं है। –

+0

उपयोग करने का एक और अच्छा कारण [] बस है: 'नया ऐरे() '=> 11 वर्ण; '[]' => 2 अक्षर। बस छोटे नोटेशन का उपयोग करें दोनों काफी समकक्ष हैं। –

7
  • कम सरणी के
  • तर्क भ्रमित कर रहे हैं (उदाहरण के लिए new Array(10) और new Array("10") काफी अलग हैं)
+0

+1 इससे भी बदतर: नया ऐरे (10) और नया ऐरे (10, 20) पूरी तरह से अलग हैं। –

1

यह वही बात है। new Array() से अधिक का उपयोग करने का एकमात्र कारण यह है कि यह छोटा है।

1

छोटा और क्लीनर। ऑब्जेक्ट्स बनाने के लिए {} का उपयोग करना चाहिए।

3

दोनों को अच्छे के रूप में उपयोग किया जा सकता है। यह चर्चा/भ्रम शुरू हो गया है क्योंकि जावास्क्रिप्ट गुरु Douglas Crockford ने बताया कि the new keyword is considered harmful। तब से अप्रत्याशित परिणाम/व्यवहार से बचने के लिए new कीवर्ड छोड़ने के लिए इसे "अच्छी अभ्यास/तकनीक" माना जाता था। यह भी देखें Stackoverflow topic

+1

इसके अलावा: jslint एक समस्या के रूप में 'नया ऐरे() 'झंडे झंडे और इसे' []' के साथ बदलने का सुझाव देता है। – Cheeso

+7

उस लिंक के शीर्ष उत्तरों में यह बताया गया है कि यह हानिकारक नहीं है, और ऐसे कई उदाहरण हैं जहां इसका उपयोग किया जा सकता है। इसके अलावा, मुझे "नए ऐरे()" – Sasha

+2

में कोई खतरा या नुकसान नहीं दिखता है यदि आप लगातार इसका उपयोग करते हैं तो वास्तव में कोई खतरे नहीं हैं। यह सिर्फ एक "अभ्यास" है। – BalusC

2

यह कोड गोल्फ में आपको कम प्रतीकों का स्कोर देता है।

3

तीन कारणों से (पहले दो अन्य उत्तर में पर विस्तार):

  1. छोटा;
  2. एक तत्व के साथ सरणी बनाने की अनुमति देता है, जैसा कि चिबू के उत्तर में विस्तृत है;
  3. Array कन्स्ट्रक्टर को ओवरराइट किए जाने की संभावना की संभावना में भी काम करता है।

गैर कारण हैं:

  1. new ऑपरेटर से बचाव। new से डरो मत क्योंकि सिर्फ डगलस क्रॉकफ़ोर्ड को इसके द्वारा काटा गया था। यह बेहद उपयोगी है।
+0

मैं किसी को भी वोट दूंगा जो कहता है "डगलस क्रॉकफ़ोर्ड को अंधेरे से न सुनें"। उनके पास महान विचार हैं, लेकिन वह भगवान नहीं हैं और मैं विशेष रूप से उनमें से कई से असहमत हूं –

संबंधित मुद्दे