ईएस 6 को बाबेल का मार्गदर्शक कहता है:
let
नया हैvar
।
जाहिरा तौर पर एकमात्र अंतर यह है कि var
वर्तमान फ़ंक्शन केlet
लिए स्कोप हो जाता है , जबकि वर्तमान ब्लॉक में स्कोप हो जाता है । इस उत्तर में कुछ अच्छे उदाहरण हैं ।
मैं var
ES6 कोड में उपयोग करने का कोई कारण नहीं देख सकता । यहां तक कि अगर आप किसी दिए गए चर को पूरे फ़ंक्शन में गुंजाइश करना चाहते हैं, तो आप let
फ़ंक्शन ब्लॉक के शीर्ष पर घोषणा डालकर ऐसा कर सकते हैं , जो var
कि वास्तविक गुंजाइश को इंगित करने के लिए वैसे भी आपके साथ होना चाहिए । और अगर आप किसी for
ब्लॉक या किसी चीज़ में कुछ और बारीक करना चाहते हैं , तो आप भी ऐसा कर सकते हैं।
इसलिए मेरी वृत्ति var
ES6 कोड लिखते समय पूरी तरह से उपयोग बंद करना है ।
मेरा सवाल यह है कि क्या मैं इस बारे में गलत हूं? क्या कोई वैध मामला है जहां var
बेहतर होगा let
?
let
किसी फ़ंक्शन के शीर्ष पर एक स्टेटमेंट डालते हैं , तो मुझे लगता है कि यह बिल्कुल स्पष्ट है कि आपने इसे पूरे फ़ंक्शन में स्कोप करने का इरादा किया है। मुझे नहीं लगता कि इसका उपयोग करने var
से यह शीर्ष पर पहुंचने के बजाय इसे और अधिक स्पष्ट कर देता है।
var
अभी भी मौजूद है, पीछे-संगतता है। यदि यह उस के लिए नहीं थे, तो वे var
पूरी तरह से हटा दिए गए थे, या let
पहले स्थान पर कभी भी पेश नहीं किए गए थे, बजाय इसके var
कि यह सब क्या होना चाहिए था के अर्थ को बदलकर ।
var
मुझे पतले लगते हैं, और तीसरे प्रकार के चर के वारंट के लिए पर्याप्त नहीं है जो चारों ओर कूदता है। आप इसे let
फंक्शन में सबसे ऊपर रखकर पूरे फंक्शन को स्कोप कर सकते हैं , जो कि var
किसी ब्लॉक में लिखने के इरादे से ज्यादा साफ होता है (ताकि उस ब्लॉक से बाहर फहराया जा सके ताकि आप ब्लॉक के बाहर इस्तेमाल कर सकें। - अजीब)। वह चेतावनी देते हैं कि यदि आप let
किसी फ़ंक्शन को स्कोप करते हैं तो "यह सिर्फ़ पोज़िशन है जो सिंटैक्स के बजाय अंतर को इंगित करता है", लेकिन मुझे लगता है कि यह एक अच्छी बात है।
var
। जिन उदाहरणों को वह रखने के लिए प्रस्तुत करता है वे var
आकस्मिक प्रतीत होते हैं - और गंभीर कोडिंग त्रुटियों पर आधारित हैं। यह एक त्रुटि में चलाने के लिए बेहतर है और भाषा के कार्यों का उपयोग करने के लिए ऐसी त्रुटियों को ठीक करने के लिए मजबूर किया जाना चाहिए जो किसी को इसके साथ दूर जाने दें! आगे क्या है, दुर्घटनाओं को रोकने के लिए एक कोशिश / पकड़ने में सब कुछ लपेटने की सलाह देते हैं? उस लिंक का बाकी हिस्सा अच्छा है लेकिन मैं उस विशेष भाग से बिल्कुल सहमत नहीं हूं।
var
एक सचेत संकेतक के रूप में उपयोग करना है कि इस चर का उद्देश्य पूरे फ़ंक्शन के लिए स्कूप किया जाना एक उपयोगी "स्व-दस्तावेजीकरण" सम्मेलन हो सकता है ।