कम() विधि के अधिकांश उपयोग मामलों को आसानी से लूप के साथ पुनः लिखा जा सकता है। और जेएसपीआरएफ पर परीक्षण से पता चलता है कि प्रत्येक पुनरावृत्ति के अंदर किए गए संचालन के आधार पर कम() आमतौर पर 60% -75% धीमी होती है।जावास्क्रिप्ट ऐरे को कम करने() विधि का उपयोग करने के लिए कोई वास्तविक लाभ है?
क्या 'कार्यात्मक शैली' में कोड लिखने में सक्षम होने के अलावा, कम करने के लिए कोई वास्तविक कारण है? यदि आपके पास थोड़ा और कोड लिखकर 60% प्रदर्शन लाभ हो सकता है, तो आप कभी भी कम() क्यों उपयोग करेंगे?
संपादित करें: असल में, अन्य कार्यशील तरीकों जैसे कि() और मानचित्र() सभी समान प्रदर्शन दिखाते हैं, कम से कम 60% लूप के लिए सरल से धीमे होते हैं। forloop vs forEach
मैं आपके साथ असहमत हूं कि वैध प्रदर्शन तुलना क्या है। _first_ वैध तुलना है, क्योंकि निश्चित रूप से (आपके उदाहरण के लिए) प्रश्न यह है कि "कौन सी विधि सरणी के प्रत्येक तत्व में जोड़ने के लिए सबसे तेज़ है?", नहीं "कौन सी विधि सबसे तेज़ है लेकिन फ़ंक्शन कॉल का उपयोग न करने वाली कोई विधि अयोग्य है प्रवेश से "। मैं इस बात से सहमत हूं कि यदि आप मानते हैं कि आप स्कोपिंग/क्लोजर उद्देश्यों के लिए वैसे भी एक फ़ंक्शन चाहते हैं तो आप '.reduce()' या 'forfor() 'या जो कुछ भी उपयोग कर सकते हैं। – nnnnnn
प्रश्न बिल्कुल वाक्यविन्यास के बारे में है, इसलिए यह एक वैध प्रदर्शन तुलना है। शायद मुझे उस परिदृश्य में प्रश्न को फिर से लिखना चाहिए जहां आप प्रदर्शन के हर संभव बिट को निचोड़ना चाहते हैं। उस स्थिति में मुझे लूप के लिए सादे का उपयोग न करने का एक अच्छा कारण नहीं मिल रहा है। क्या आप एक ठोस उदाहरण प्रदान कर सकते हैं जिसमें स्कोपिंग की पूरी आवश्यकता है? –
@EvanYou: '[1,2,3]।के लिए (फ़ंक्शन (x) {setTimeout (फ़ंक्शन() {अलर्ट (x)}, 1000)}) '(अलर्ट 1,2,3) बनाम' var (= i i 0; i <4; i ++) {setTimeout (फ़ंक्शन() {अलर्ट (i)}, 1000)} '(अलर्ट 4,4,4) – ninjagecko