"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जॉर्ज और रॉबर्ट एक बार में चलते हैं...

जॉर्ज और रॉबर्ट एक बार में चलते हैं...

2024-08-01 को प्रकाशित
ब्राउज़ करें:115

George and Robert walk into a bar...

शीर्षक से ऐसा लग सकता है कि यहां केवल एक चुटकुला आपका इंतजार कर रहा है (एक एसईओ विनाशकारी, मुझे पता है)। निराश करने के लिए क्षमा करें. यह पोस्ट वास्तव में ES2021 में पेश किए गए जावास्क्रिप्ट के लॉजिकल असाइनमेंट ऑपरेटरों के बारे में है। यह जानने के लिए पढ़ें कि जॉर्ज और रॉबर्ट का इससे क्या लेना-देना है...

ऐतिहासिक पृष्ठभूमि

लॉजिकल असाइनमेंट ऑपरेटर अनिवार्य रूप से बूलियन लॉजिक और असाइनमेंट ऑपरेशन का मिश्रण हैं। लेकिन इन घटकों में शुरुआत में जितना सोचा जा सकता है, उससे कहीं अधिक है।

एक बात के लिए, बहुत से, यदि अधिकांश नहीं, डेवलपर्स को यह एहसास नहीं हो सकता है कि आधुनिक कंप्यूटिंग के ताने-बाने में बूलियन तर्क कितनी गहराई से बुना गया है। यह कंप्यूटर सर्किट से लेकर आपके कोड में सशर्त विवरण तक फैला हुआ है।

हम भी हर दिन समान चिह्न का उपयोग करते हैं, अक्सर इस पर अधिक विचार किए बिना। यह प्रतीक, जो अब गणित और कोडिंग दोनों में महत्वपूर्ण है, का आविष्कार 16वीं शताब्दी में गणितीय उद्देश्यों के लिए किया गया था। लगभग 400 साल बाद, 1950 के दशक में, इसने कंप्यूटर प्रोग्रामिंग में अपना रास्ता खोज लिया।

यदि यह ऐतिहासिक संदर्भ आपको थोड़ा भी दिलचस्प नहीं लगता है, तो बेझिझक लॉजिकल असाइनमेंट ऑपरेटर्स को समझने वाले अनुभाग पर जाएं। अन्यथा, समय में पीछे की एक संक्षिप्त यात्रा के लिए मेरे साथ जुड़ें।

जॉर्ज बूले

तर्क के शुरुआती अध्ययन का श्रेय प्राचीन यूनानियों, विशेष रूप से अरस्तू को दिया जाता है, जिन्हें अक्सर "तर्क का जनक" कहा जाता है। उन्होंने तर्क की एक औपचारिक प्रणाली विकसित की जिसने तार्किक ऑपरेटरों के उपयोग के लिए आधार तैयार किया।

तार्किक संचालकों की वास्तविक गणितीय नींव, जैसा कि हम आज उन्हें जानते हैं, 19वीं शताब्दी में प्रतीकात्मक तर्क के आगमन के साथ आकार लेना शुरू हुआ। यह तार्किक रूपों और संरचनाओं का प्रतिनिधित्व करने के लिए प्रतीकों का उपयोग करता है, जो अधिक जटिल और अमूर्त तर्क की अनुमति देता है।

19वीं सदी के अंग्रेजी गणितज्ञ और तर्कशास्त्री जॉर्ज बूले ने अपने मौलिक काम "द लॉज़ ऑफ थॉट" (1854) में तर्क के लिए एक बीजगणितीय दृष्टिकोण पेश किया। यहां मान या तो सत्य या गलत हो सकते हैं, और इन मानों पर बीजगणितीय संचालन के अनुरूप संचालन किया जा सकता है। इस प्रणाली में बुनियादी तार्किक ऑपरेटर शामिल थे:

  • और (संयोजन)
  • या (विच्छेद)
  • नहीं (नकारात्मक)

बूले के काम के आधार पर, अन्य गणितज्ञों और तर्कशास्त्रियों ने प्रतीकात्मक तर्क के दायरे और गहराई का विस्तार किया। और 20वीं सदी के मध्य में इसे कंप्यूटर विज्ञान के उभरते क्षेत्र में एक नई और उपजाऊ जमीन मिली। बूलियन लॉजिक की बाइनरी प्रकृति कंप्यूटर के केंद्र में डिजिटल सर्किटरी के लिए बिल्कुल उपयुक्त साबित हुई, जहां डेटा को 0s और 1s की श्रृंखला के रूप में दर्शाया जा सकता है, और तार्किक ऑपरेटर इस डेटा के प्रवाह को नियंत्रित कर सकते हैं।

लॉजिकल ऑपरेटर्स प्रोग्रामिंग भाषाओं का एक मूलभूत हिस्सा बन गए, जिससे सॉफ्टवेयर में जटिल कम्प्यूटेशनल लॉजिक और निर्णय लेने की प्रक्रियाओं के निर्माण की अनुमति मिली। आज, वे लगभग हर प्रोग्रामिंग भाषा के वाक्यविन्यास का अभिन्न अंग हैं।

रॉबर्ट रिकार्डे

समान चिह्न की शुरुआत 1557 में वेल्श गणितज्ञ रॉबर्ट रिकॉर्डे ने अपनी पुस्तक "द वेटस्टोन ऑफ विट्टे" में की थी। रिकार्डे अपने काम में बार-बार "बराबर है" लिखते-लिखते थक गए, इसलिए उन्होंने समानता के प्रतीक के रूप में समान लंबाई की दो समानांतर रेखाओं को चुना। जैसा कि उन्होंने कहा, ऐसा इसलिए था क्योंकि "नोए 2 थिन्जेस मोरे इक्वेलल हो सकते हैं।" यह गणितीय संकेतन में एक महत्वपूर्ण विकास था, जिसने समानता को व्यक्त करने का एक संक्षिप्त और स्पष्ट तरीका प्रदान किया।

प्रोग्रामिंग के शुरुआती दिनों में, विशेष रूप से मशीन कोड और असेंबली भाषाओं के साथ, "असाइनमेंट" की अवधारणा रजिस्टरों और मेमोरी स्थानों के बीच डेटा को संग्रहीत करने और स्थानांतरित करने के बारे में अधिक थी। विशिष्ट ऑपकोड का उपयोग करके निर्देश दिए गए थे जो मशीन को इन कार्यों को करने के लिए निर्देशित करते थे।

जैसे ही उच्च-स्तरीय प्रोग्रामिंग भाषाएं विकसित हुईं, वेरिएबल्स को मान निर्दिष्ट करने के संचालन का प्रतिनिधित्व करने के लिए अधिक अमूर्त और मानव-पठनीय तरीके की आवश्यकता थी। इसके कारण 1950 के दशक में फोरट्रान से शुरू होकर कई भाषाओं में असाइनमेंट ऑपरेटर के रूप में समान चिह्न को अपनाया गया।

असाइनमेंट के लिए = के उपयोग ने समानता के गणितीय अर्थ के साथ कुछ अस्पष्टता पैदा की। इसके परिणामस्वरूप प्रोग्रामिंग में इरादे को स्पष्ट करने के लिए विभिन्न प्रतीकों की शुरूआत हुई:

  • 1960 के दशक में विकसित अल्गोल ने असाइनमेंट के लिए := प्रतीक पेश किया, इसे समानता तुलना से अलग किया।
  • सी ने बाद में असाइनमेंट के लिए = और समानता परीक्षण के लिए == के उपयोग को लोकप्रिय बनाया, एक परंपरा जिसका बाद की कई भाषाओं ने पालन किया।

समय के साथ, प्रोग्रामिंग भाषाओं ने विभिन्न कार्यों को कुशलतापूर्वक संभालने के लिए असाइनमेंट ऑपरेटरों के विभिन्न रूपों को पेश किया है, जैसे कंपाउंड असाइनमेंट ऑपरेटर (=, -=, आदि) और, हाल ही में, जावास्क्रिप्ट में लॉजिकल असाइनमेंट ऑपरेटर।

लॉजिकल असाइनमेंट ऑपरेटर्स को समझना

लॉजिकल असाइनमेंट ऑपरेटर्स जावास्क्रिप्ट में सिंटैक्टिक शुगर हैं जो असाइनमेंट (=) को लॉजिकल (&&, ||) या नलिश कोलेसिंग (??) ऑपरेटर के साथ जोड़ते हैं। तीन प्रकार हैं:

  • तार्किक और असाइनमेंट (&&=): बाईं ओर के वेरिएबल के दाईं ओर का मान केवल तभी निर्दिष्ट करता है जब बायां वेरिएबल सत्य है।
  • तार्किक या असाइनमेंट (||=): बाईं ओर के वेरिएबल के दाईं ओर का मान तभी निर्दिष्ट करता है जब बायां वेरिएबल गलत हो।
  • नॉलिश कोलेसिंग असाइनमेंट (??=): बाईं ओर के वेरिएबल के दाईं ओर का मान तभी निर्दिष्ट करता है जब बायां वेरिएबल शून्य या अपरिभाषित हो।

तार्किक और असाइनमेंट (&&=)

&&= ऑपरेटर एक वेरिएबल का मान सेट करने के लिए एक शॉर्टकट है, केवल अगर यह वर्तमान में सत्य मान रखता है। यह उन परिदृश्यों में विशेष रूप से उपयोगी है जहां कोई कार्रवाई केवल तभी आगे बढ़नी चाहिए जब एक निश्चित स्थिति सत्य बनी रहे।

उदाहरण उपयोग मामला: फ़ीचर टॉगल

एक ऐसे परिदृश्य की कल्पना करें जहां कुछ सुविधाएं केवल प्रशासकों के लिए सक्षम की जानी चाहिए:

const isAdmin = user.isAdmin();
let canAccessDashboard = isAdmin;

canAccessDashboard &&= user.isAuthenticated();
console.log(canAccessDashboard); // true if user is authenticated, otherwise false

यह कोड स्निपेट सुनिश्चित करता है कि canAccessDashboard केवल तभी सत्य है जब isAdmin और user.isAuthenticated() दोनों सत्य हैं, प्रभावी रूप से दो स्थितियों के पीछे सुविधा की रक्षा करते हैं।

तार्किक या असाइनमेंट (||=)

||= ऑपरेटर आपको एक वेरिएबल के लिए एक मान निर्दिष्ट करने की अनुमति देता है यदि वेरिएबल वर्तमान में गलत मान रखता है (उदाहरण के लिए, शून्य, अपरिभाषित, 0, गलत, "")। यह डिफ़ॉल्ट मान सेट करने के लिए अविश्वसनीय रूप से उपयोगी है।

उदाहरण उपयोग मामला: डिफ़ॉल्ट सेटिंग

const userSettings = {
  theme: null,
};

// Set default theme if none is specified
userSettings.theme ||= "dark";
console.log(userSettings.theme); // Outputs 'dark'

यह ऑपरेटर उन वेरिएबल्स को आरंभ करने के लिए आदर्श है जो सेट नहीं किए गए हैं, यह सुनिश्चित करते हुए कि आपका एप्लिकेशन 0 या गलत जैसे संभावित सार्थक गलत मानों को अधिलेखित किए बिना एक समझदार डिफ़ॉल्ट का उपयोग करता है।

अशक्त सहसंयोजन असाइनमेंट (??=)

द ?? ऑपरेटर, जिसे नॉलिश कोलेसिंग ऑपरेटर के रूप में जाना जाता है, प्रोग्रामिंग भाषाओं में अपेक्षाकृत हाल ही में जोड़ा गया है। यह सख्त अर्थों में एक तार्किक असाइनमेंट ऑपरेटर नहीं है, भले ही ES2021 विनिर्देश इसे इस प्रकार वर्गीकृत करता है, क्योंकि यह तार्किक ऑपरेटर पर आधारित नहीं है। इसके बजाय, इसका विकास प्रोग्रामिंग की व्यावहारिक आवश्यकताओं से अधिक निकटता से जुड़ा हुआ है, विशेष रूप से शून्य और अपरिभाषित मूल्यों को स्वच्छ और पूर्वानुमानित तरीके से संभालने में।

??= ऑपरेटर का उपयोग किसी वेरिएबल को मान निर्दिष्ट करने के लिए किया जाता है यदि और केवल तभी जब वेरिएबल वर्तमान में शून्य या अपरिभाषित हो। यह ||= ऑपरेटर से अधिक सटीक है, जो अन्य मिथ्या मानों पर भी विचार करता है।

उदाहरण उपयोग मामला: कॉन्फ़िगरेशन डिफ़ॉल्ट

const config = {
  timeout: 0,
};

config.timeout ??= 5000; // Set default timeout if not specified, i.e. undefined, or null
console.log(config.timeout); // Outputs 0, preserving the explicitly set falsy value

यह ऑपरेटर कॉन्फ़िगरेशन और सेटिंग्स में विशेष रूप से उपयोगी है जहां डिफ़ॉल्ट को केवल 0 जैसी अन्य झूठी लेकिन मान्य सेटिंग्स को प्रतिस्थापित किए बिना लापता मान भरना चाहिए।

व्यावहारिक लाभ और विचार

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

अतिरिक्त नोट

जावास्क्रिप्ट में अधिक असाइनमेंट ऑपरेटर हैं, जैसे लेफ्ट शिफ्ट असाइनमेंट ऑपरेटर (

(फ्रीपिक पर स्टारलाइन द्वारा शीर्ष पर कवर छवि)

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/codejet/george-and-robert-walk-into-a-bar-413e?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3