का अर्थ विज्ञान varऔरlet
varऔर letमशीन और अन्य प्रोग्रामर के लिए एक बयान है:
मैं चाहता हूं कि निष्पादन के दौरान इस असाइनमेंट का मूल्य बदल जाए। इस असाइनमेंट के अंतिम मूल्य पर भरोसा न करें।
उपयोग करने के निहितार्थ varऔरlet
varऔर letअन्य प्रोग्रामर को कार्यक्रम के निष्पादन में उस बिंदु पर असाइनमेंट के मूल्य, और असाइनमेंट के मूल्य के बारे में कारण से सभी हस्तक्षेप कोड को पढ़ने के लिए मजबूर करते हैं।
वे ESLint और अन्य भाषा सेवाओं के लिए मशीन तर्क को कमजोर करते हैं जो बाद के असाइनमेंट में गलत रूप से परिवर्तनशील चर नामों का पता लगाने के लिए होते हैं और बाहरी गुंजाइश चर नामों का गुंजाइश पुन: उपयोग करते हैं जहां आंतरिक गुंजाइश घोषित करना भूल जाते हैं।
वे सभी कोडपाथों पर कई पुनरावृत्तियों को चलाने के लिए रनटाइम्स का कारण बनते हैं ताकि यह पता लगाया जा सके कि वे वास्तव में, स्थिरांक हैं, इससे पहले कि वे उन्हें अनुकूलित कर सकें। हालांकि यह बग का पता लगाने और डेवलपर की समझ से कम समस्या है।
कब इस्तेमाल करें const
यदि संदर्भ का मूल्य निष्पादन के पाठ्यक्रम में नहीं बदलता है, तो प्रोग्रामर के इरादे को व्यक्त करने के लिए सही वाक्यविन्यास है const। वस्तुओं के लिए, संदर्भ के मूल्य को बदलने का अर्थ है कि किसी अन्य वस्तु की ओर इशारा करना, क्योंकि संदर्भ अपरिवर्तनीय है, लेकिन वस्तु नहीं है।
" const" वस्तुओं
वस्तु संदर्भ के लिए, सूचक किसी अन्य वस्तु को नहीं बदला जा सकता है, लेकिन उद्देश्य यह है कि बनाया है और एक को सौंपा गया है constघोषणा है परिवर्तनशील। आप constसंदर्भित संदर्भ से आइटम जोड़ या हटा सकते हैं , और constसंदर्भित ऑब्जेक्ट पर संपत्ति कुंजियों को म्यूट कर सकते हैं ।
अपरिवर्तनीय वस्तुओं को प्राप्त करने के लिए (जो फिर से, आपके कोड को मनुष्यों और मशीनों के बारे में तर्क करना आसान बनाते हैं), आप Object.freezeइस तरह से घोषणा / असाइनमेंट / निर्माण में वस्तु कर सकते हैं :
const Options = Object.freeze(['YES', 'NO'])
Object.freeze का प्रदर्शन पर प्रभाव पड़ता है, लेकिन आपका कोड संभवतः अन्य कारणों से धीमा है। आप इसे प्रोफाइल करना चाहते हैं।
आप किसी राज्य मशीन में उत्परिवर्तित वस्तु का एनकैप्सुलेट कर सकते हैं और मूल्यों के रूप में गहरी प्रतियां लौटा सकते हैं (यह कैसे Redux और React राज्य कार्य है)। पहले सिद्धांतों से इसे कैसे बनाया जाए, उदाहरण के लिए ब्राउज़र जेएस में परस्पर वैश्विक स्थिति से बचना देखें ।
कब varऔर letकैसे एक अच्छा मैच है
letऔर varपरस्पर अवस्था का प्रतिनिधित्व करते हैं। उन्हें, मेरी राय में, केवल वास्तविक परिवर्तनशील स्थिति को मॉडल करने के लिए उपयोग किया जाना चाहिए । " कनेक्शन जिंदा है? " जैसी चीजें ।
ये परीक्षण योग्य राज्य मशीनों में सबसे अच्छे हैं जो निरंतर मूल्यों को उजागर करते हैं जो " कनेक्शन की वर्तमान स्थिति " का प्रतिनिधित्व करते हैं , जो कि किसी भी समय एक स्थिर है, और आपके बाकी कोड वास्तव में क्या रुचि रखते हैं।
साइड-इफेक्ट्स की रचना और डेटा को बदलने के साथ प्रोग्रामिंग पहले से ही काफी कठिन है। प्रत्येक फ़ंक्शन को एक अस्थिर राज्य मशीन में बदलकर परिवर्तनशील राज्य को केवल जटिलता पर ढेर के साथ उत्परिवर्तित राज्य बनाकर।
अधिक बारीक व्याख्या के लिए, शॉन द म्यूटेंट - के लिए मामला देखेंconst ।