शुद्ध फ़ंक्शन और साइड इफ़ेक्ट
पूर्वानुमान योग्य और परीक्षण योग्य फ़ंक्शन लिखिए।
शुद्ध फ़ंक्शन और साइड इफ़ेक्ट, CoddyKit पर JavaScript Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह JavaScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
किसी फ़ंक्शन को शुद्ध क्या बनाता है
एक शुद्ध फ़ंक्शन की दो विशेषताएँ होती हैं: समान इनपुट मिलने पर वह हमेशा समान आउटपुट लौटाता है और कोई दिखाई देने वाला दुष्प्रभाव उत्पन्न नहीं करता। शुद्ध फ़ंक्शन का व्यवहार अनुमानित होता है और उनका परीक्षण आसान होता है।
function add(a, b) {
return a + b;
}
console.log(add(2, 3));
console.log(add(2, 3)); // always 5नियतात्मक आउटपुट
शुद्धता का अर्थ नियतात्मकता है। समान आर्ग्युमेंट हमेशा समान परिणाम में बदलने चाहिए और परिणाम किसी छिपी हुई स्थिति, समय या यादृच्छिकता पर निर्भर नहीं होना चाहिए।
function double(n) {
return n * 2;
}
console.log(double(10)); // always 20दुष्प्रभाव क्या होता है
दुष्प्रभाव वह सब कुछ है जो कोई फ़ंक्शन मान लौटाने के अलावा करता है: लॉग दर्ज करना, बाहरी स्थिति बदलना, स्टोरेज में लिखना, नेटवर्क कॉल करना या अपने आर्ग्युमेंट बदलना।
let total = 0;
function impureAdd(n) {
total += n; // side effect: mutates outer state
return total;
}
console.log(impureAdd(5));
console.log(impureAdd(5)); // 5 then 10, not pureबाहरी स्थिति पर निर्भरता
बदलने योग्य बाहरी स्थिति को पढ़ना भी शुद्धता को तोड़ता है, क्योंकि आर्ग्युमेंट समान रहने पर भी आउटपुट बदल सकता है।
let rate = 1.5;
function priceImpure(x) {
return x * rate; // depends on outside variable
}
console.log(priceImpure(10)); // 15
rate = 2;
console.log(priceImpure(10)); // 20 - different resultइसे शुद्ध बनाना
फ़ंक्शन को आवश्यक हर चीज़ आर्ग्युमेंट के रूप में दें। अब उसका परिणाम केवल इनपुट पर निर्भर करेगा।
function price(x, rate) {
return x * rate;
}
console.log(price(10, 1.5)); // 15
console.log(price(10, 2)); // 20आर्ग्युमेंट बदलना अशुद्ध है
दिए गए ऑब्जेक्ट या ऐरे को बदलना ऐसा दुष्प्रभाव है जिसे कॉल करने वाला कोड देख सकता है। शुद्ध फ़ंक्शन अपने इनपुट को बिना बदले छोड़ते हैं।
function impurePush(arr, x) {
arr.push(x); // mutates caller array
return arr;
}
const a = [1, 2];
impurePush(a, 3);
console.log(a); // [1, 2, 3] - caller changedनए मान लौटाना
शुद्ध रूप इनपुट को बदलने के बजाय नया मान बनाकर लौटाता है।
function pureAppend(arr, x) {
return [...arr, x];
}
const a = [1, 2];
const b = pureAppend(a, 3);
console.log(a); // [1, 2] unchanged
console.log(b); // [1, 2, 3]शुद्धता क्यों उपयोगी है
शुद्ध फ़ंक्शन का परीक्षण बहुत आसान होता है (किसी तैयारी या नकली निर्भरता की आवश्यकता नहीं), उन्हें सुरक्षित रूप से कैश किया जा सकता है और किसी भी क्रम में या समानांतर रूप से चलाया जा सकता है। वे कोड के स्थानीय तर्क को समझना आसान बनाते हैं।
function square(n) { return n * n; }
console.log([1, 2, 3].map(square)); // [1, 4, 9]अशुद्धता को अलग रखना
आप सभी दुष्प्रभावों से बच नहीं सकते; ऐप्स को लॉग दर्ज करना, डेटा प्राप्त करना और दृश्य बनाना पड़ता है। लक्ष्य यह है कि प्रभावों को किनारों तक सीमित रखा जाए और मुख्य तर्क को शुद्ध रखा जाए।
function computeTotal(items) {
return items.reduce((s, i) => s + i.price, 0);
}
const total = computeTotal([{ price: 5 }, { price: 7 }]);
console.log(total); // 12 - pure core, log at the edgeसंदर्भगत पारदर्शिता
किसी शुद्ध कॉल को उसके परिणाम से बदलने पर व्यवहार नहीं बदलता। add(2, 3) को कहीं भी 5 से बदला जा सकता है। इस गुण को संदर्भगत पारदर्शिता कहते हैं।
function add(a, b) { return a + b; }
const x = add(2, 3) + add(2, 3);
const y = 5 + 5;
console.log(x === y); // trueअशुद्धता पहचानना
इन संकेतों पर ध्यान दें: console, Math.random, Date.now, बाहरी चरों को मान देना या आर्ग्युमेंट बदलना। इनमें से कोई भी बात फ़ंक्शन को अशुद्ध बना देती है।
function pureRoll(seed) {
return (seed * 1103515245 + 12345) % 100;
}
console.log(pureRoll(42)); // deterministic, testableत्वरित जाँच
शुद्ध फ़ंक्शन पहचानना।
पुनरावलोकन
शुद्ध फ़ंक्शन नियतात्मक होते हैं और दुष्प्रभावों से मुक्त रहते हैं: न बाहरी बदलाव, न इनपुट/आउटपुट, न आर्ग्युमेंट में बदलाव। निर्भरताएँ आर्ग्युमेंट के रूप में दें और बदलाव करने के बजाय नए मान लौटाएँ। शुद्धता से परीक्षण-योग्यता, स्मृति में परिणाम रखना, संदर्भगत पारदर्शिता और समानांतर रूप से सुरक्षित निष्पादन मिलता है। मुख्य तर्क को शुद्ध रखें और प्रभावों को किनारों तक सीमित करें।
एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 59
- पाठ
- 200
अक्सर पूछे जाने वाले प्रश्न
क्या “शुद्ध फ़ंक्शन और साइड इफ़ेक्ट” पाठ निःशुल्क है?
हाँ — JavaScript Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “शुद्ध फ़ंक्शन और साइड इफ़ेक्ट” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“शुद्ध फ़ंक्शन और साइड इफ़ेक्ट” में मैं क्या सीखूँगा?
पूर्वानुमान योग्य और परीक्षण योग्य फ़ंक्शन लिखिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ JavaScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या JavaScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर JavaScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“शुद्ध फ़ंक्शन और साइड इफ़ेक्ट” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस JavaScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर JavaScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- शुद्ध फ़ंक्शन और साइड इफ़ेक्ट
- घोषणात्मक डेटा रूपांतरण
- म्यूटेशन से बचना
- पॉइंट-फ़्री शैली