मूल्य से गुजरें
पास बाय वैल्यू . में , एक फ़ंक्शन को वेरिएबल के मान को सीधे तर्क के रूप में पास करके कहा जाता है। फ़ंक्शन के अंदर तर्क बदलने से फ़ंक्शन के बाहर से पारित चर प्रभावित नहीं होता है। Javascript हमेशा मान से गुज़रें इसलिए चर के मान को बदलने से अंतर्निहित आदिम (स्ट्रिंग या संख्या) कभी नहीं बदलता है।
निम्नलिखित उदाहरण में, चर 'ए' ने मान 1 निर्दिष्ट किया है। लेकिन फ़ंक्शन 'परिवर्तन' के अंदर इसे मान 2 के साथ असाइन किया गया है। चूंकि जावास्क्रिप्ट हमेशा एक मूल्य से गुजरता है , प्रदर्शित आउटपुट '1' होगा लेकिन '2' नहीं।
उदाहरण
<html> <body> <script> let a = 1; let change = (val) => { val = 2 } change(a); document.write(a); </script> </body> </html>
आउटपुट
1
संदर्भ द्वारा पास करें
कुछ उदाहरण हैं कि किसी फ़ंक्शन को कॉल करने के लिए तर्कों के बजाय पता पारित किया जाता है। उस समय, फ़ंक्शन के अंदर मान बदलने से फ़ंक्शन के बाहर से पारित चर प्रभावित होता है। इसे पास बाय रेफरेंस . कहा जाता है . जावास्क्रिप्ट में ज्यादातर सरणियाँ और ऑब्जेक्ट संदर्भ से गुजरते हैं।
निम्नलिखित उदाहरण में 'ए' नामक ऑब्जेक्ट को 'चेंज' फ़ंक्शन के बाहर घोषित किया गया है। यहां यह ध्यान दिया जाना चाहिए कि चर 'ए' उत्परिवर्तित हो गया लेकिन मान 2 के साथ असाइन नहीं किया गया, जैसा कि उदाहरण 2 में दिखाया गया है। ए संदर्भ से गुजरना तब होता है जब म्यूटेशन हो गई है।
उदाहरण-1
<html> <body> <script> let a = {num:1}; let change = (val) => { val.num = 2 } change(a); document.write(JSON.stringify(a)); </script> </body> </html>
आउटपुट
{"num":2}
निम्न उदाहरण में म्यूटेशन के बजाय , चर 'ए' को असाइन किया गया मान 2 के साथ। तो मूल्य से गुजरें होता है और बाहरी चर पर कोई प्रभाव नहीं पड़ेगा।
उदाहरण-2
<html> <body> <script> let a = {num : 1}; let change = (val) => { val = {num :2}; } change(a); document.write(JSON.stringify(a)); </script> </body> </html>
आउटपुट
{"num":1}