जावास्क्रिप्ट में कार्यात्मक प्रोग्रामिंग: मूल बातें और उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

JavaScript में कार्यात्मक प्रोग्रामिंग: सिद्धांत से व्यवहार तक



कार्यात्मक प्रोग्रामिंग (Functional Programming - FP) एक प्रतिमान है जो गणनाओं को गणितीय फलनों की गणना के रूप में मानता है और स्थिति में परिवर्तन तथा परिवर्तनीय डेटा से बचता है। आधुनिक JavaScript में, विशेष रूप से Node.js वातावरण में, अपनी पूर्वानुमेयता, परीक्षणीयता और मॉड्यूलरिटी के कारण कार्यात्मक दृष्टिकोण तेजी से लोकप्रिय हो रहा है। इस लेख में हम FP की प्रमुख अवधारणाओं को समझेंगे और दिखाएंगे कि वास्तविक परियोजनाओं में उन्हें कैसे लागू किया जाए।



1. शुद्ध फलन और दुष्प्रभावों का अभाव



शुद्ध फलन (Pure Function) वह फलन है जो:

  • समान तर्कों के लिए हमेशा एक ही परिणाम लौटाता है (नियतिवाद)।
  • कोई दुष्प्रभाव उत्पन्न नहीं करता (बाहरी चर नहीं बदलता, डेटा आउटपुट नहीं करता, फ़ाइल सिस्टम तक नहीं पहुँचता)।


शुद्ध फलन का उदाहरण:

// शुद्ध फलन: दो संख्याओं को जोड़ता हैconst add = (a, b) => a + b;

console.log(add(2, 3)); // 5console.log(add(2, 3)); // 5 — हमेशा समान


अशुद्ध फलन का उदाहरण:

let counter = 0;const increment = () => {    counter++; // दुष्प्रभाव: बाहरी चर को बदलता है    return counter;};

console.log(increment()); // 1console.log(increment()); // 2 — परिणाम अलग


कार्यात्मक प्रोग्रामिंग में हम केवल शुद्ध फलन लिखने का प्रयास करते हैं। इससे कोड का परीक्षण और डिबगिंग आसान हो जाता है।



2. डेटा की अपरिवर्तनीयता (Immutability)



अपरिवर्तनीयता का अर्थ है कि डेटा निर्माण के बाद परिवर्तित नहीं होता। मौजूदा ऑब्जेक्ट को बदलने के बजाय हम आवश्यक परिवर्तनों के साथ उसकी एक नई प्रतिलिपि बनाते हैं। JavaScript में इसके लिए अक्सर spread ऑपरेटर (...) या Object.assign विधि का उपयोग किया जाता है।



ऑब्जेक्ट के अपरिवर्तनीय अद्यतन का उदाहरण:

const user = { name: 'Alice', age: 30 };

// बुरा: म्यूटेशनuser.age = 31;

// अच्छा: नया ऑब्जेक्ट बनाएँconst updatedUser = { ...user, age: 31 };

console.log(user); // { name: 'Alice', age: 30 }console.log(updatedUser); // { name: 'Alice', age: 31 }


एरे के लिए भी अपरिवर्तनीय विधियों का उपयोग करें:

const numbers = [1, 2, 3];

// म्यूटेशन (बुरा)numbers.push(4);

// अपरिवर्तनीय (अच्छा)const newNumbers = [...numbers, 4];

console.log(numbers); // [1, 2, 3]console.log(newNumbers); // [1, 2, 3, 4]


3. उच्च-क्रम फलन: map, filter, reduce



उच्च-क्रम फलन (Higher-Order Functions) वे फलन हैं जो अन्य फलनों को तर्क के रूप में लेते हैं या उन्हें लौटाते हैं। JavaScript में तीन सबसे लोकप्रिय विधियाँ map, filter और reduce हैं। ये लूप और म्यूटेशन के बिना एरे को संसाधित करने की अनुमति देते हैं।



3.1. map() — एरे का रूपांतरण

map विधि मूल एरे के प्रत्येक तत्व पर एक फलन लागू करके एक नया एरे बनाती है।



const prices = [100, 200, 300];const withTax = prices.map(price => price * 1.2);

console.log(withTax); // [120, 240, 360]// मूल एरे अपरिवर्तित रहाconsole.log(prices); // [100, 200, 300]


3.2. filter() — एरे का फ़िल्टरेशन

filter विधि एक नया एरे लौटाती है जिसमें केवल वे तत्व होते हैं जिनके लिए पारित फलन true लौटाता है।



const ages = [15, 22, 18, 30, 12];const adults = ages.filter(age => age >= 18);

console.log(adults); // [22, 18, 30]


3.3. reduce() — डेटा का एकत्रीकरण

reduce विधि एरे को एक एकल मान (संख्या, ऑब्जेक्ट, स्ट्रिंग) में संक्षिप्त करती है।



const numbers = [1, 2, 3, 4, 5];const sum = numbers.reduce((accumulator, current) => accumulator + current, 0);

console.log(sum); // 15


इन विधियों को मिलाकर, जटिल समस्याओं को कार्यात्मक शैली में हल किया जा सकता है:

const users = [  // ... (कोड उदाहरण जारी है)

ब्लॉग

पुस्तक अनुशंसाएँ