मुझे समझ में आता है कि var
वह नाम क्यों लेता है - यह परिवर्तनीय है, const
- यह स्थिर है, लेकिन let
के नाम के पीछे क्या अर्थ है, जो मौजूदा ब्लॉक पर स्कॉप्स करता है? होने दो?जावास्क्रिप्ट में ब्लॉक-स्कोप्ड वैरिएबल घोषणाओं के लिए 'चलो' नाम क्यों चुना गया था?
उत्तर
Let एक गणितीय बयान है कि योजना और बेसिक जैसे प्रारंभिक प्रोग्रामिंग भाषाओं द्वारा अपनाया गया था कि "मेरे पालतू एक कुत्ता होने दो"। वेरिएबल्स को निम्न स्तर की इकाइयों को अवशोषण के उच्च स्तर के लिए उपयुक्त नहीं माना जाता है, इस प्रकार कई भाषा डिजाइनरों की इच्छा क्लोजर, एफ #, स्कैला जैसी समान लेकिन अधिक शक्तिशाली अवधारणाओं को पेश करने की इच्छा है, जहां let
का अर्थ एक मान हो सकता है, या वेरिएबल हो सकता है असाइन किया गया, लेकिन नहीं बदला, जो बदले में कंपाइलर को अधिक प्रोग्रामिंग त्रुटियों को पकड़ने और कोड को बेहतर अनुकूलित करने देता है। जावास्क्रिप्ट की शुरुआत से var
था, इसलिए उन्हें केवल एक और कीवर्ड की आवश्यकता थी, और let
का उपयोग पारंपरिक रूप से var
जितना संभव हो सके पारंपरिक कीवर्ड के रूप में किया जाता है, हालांकि जावास्क्रिप्ट let
में ब्लॉक स्कोप स्थानीय चर बनाता है।
अच्छी तरह से समझाया। – gani
और आधिकारिक मोज़िला दस्तावेज़ीकरण पृष्ठ इस प्रश्न के लिए इस पृष्ठ को उद्धृत करता है https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let – SarathChandra
यह भी अच्छा है कि 'लेन (' var ') == = लेन ('चलो') ', जिसका अर्थ है कि आपकी घोषणाएं आपके संपादक में किसी भी तरह से अच्छी तरह से बढ़ती हैं।मुझे यह सुझाव देने के लिए अभी तक कुछ भी नहीं मिला है कि यह जानबूझकर था, लेकिन यह या तो हो सकता है) दृष्टि से प्रसन्न और अधिक पठनीय, या बी) अगर आप दो मिश्रण करते हैं तो डीबग करने के लिए बहुत परेशान करना (जो कि किसी भी तरह के बुरे विचार की तरह लगता है, लेकिन मैं ' मैंने इसे देखा है)। – brichins
मुझे लगता है कि यह गणितीय परंपरा का पालन करता है। गणित में, अक्सर यह कहा जाता है कि "एक्स को मनमाना वास्तविक संख्या दें" या ऐसा ही।
यह ठीक है var
एक दायरे के अंतर के साथ करता है। अब यह var
नाम नहीं ले सकता है क्योंकि यह पहले ही लिया जा चुका है।
तो ऐसा लगता है कि उसने अगले सबसे अच्छे नाम को लिया है जो एक दिलचस्प अंग्रेजी भाषा निर्माण में अर्थपूर्ण है।
let myPet = 'dog';
अंग्रेजी में यह कहते हैं
जबकि उत्पत्ति की उत्पत्ति भाषाई और गणितीय हो सकती है, लेकिन निकट-घर संदर्भ संदर्भ निस्संदेह बीएएसआईसी प्रोग्रामिंग भाषा के सभी संस्करणों में एलईटी स्टेटमेंट है, एक ऐसा है कि ईएस 6 के कई लेखकों ने सीखना शुरू कर दिया होगा यदि वे हैं 40 से अधिक यो। –
@wide_eyed_pupil बस FYI: एक 40 से अधिक (हालांकि ईएस 6 का लेखक नहीं) जो बेसिक पर बड़ा हुआ, कोई भी समुदाय मैं सामान्य अभ्यास में उपयोग किए गए एलईटी के साथ शामिल नहीं था; हमने अभी चर को असाइन किया है, क्योंकि पाइथन अब करता है (उदाहरण के लिए 'ए $ = "हैलो वर्ल्ड" ') शामिल दुभाषियों में रॉकवेल एआईएम 65 बेसिक, अटारी बेसिक, सीपी/एम, एपल्सॉफ्ट बेसिक, और यहां तक कि बास्कॉम, एमएस बेसिक पर एमबीएएसआईसीआई 5 शामिल थे। सीपी/एम पर संकलक। वैक्स बेसिक में एलईटी था, लेकिन मुझे इसकी आवश्यकता नहीं थी, जैसा कि मुझे याद है। मेमोरी तब तंग थी, और प्रति पाठ कार्यक्रम पाठ के 3 या 4 अतिरिक्त पात्रों ने विशेष रूप से "बड़े" कार्यक्रमों में एक अंतर बनाया। –
@ पीटर हॉल यह दिलचस्प है, मैंने डिजिटल सीपीयू से जुड़े पेंसिल चिह्नित कार्ड पर अपना पहला कोडिंग किया, फिर स्कूल में पुराने आदमी की शोध प्रयोगशाला और डिजिटल पीडीपी 8 पर मेनफ्रेम। कभी-कभी लोगों ने कथन का उपयोग किए बिना एलईटी का उपयोग कभी नहीं देखा, किताबों में मैंने नहीं पढ़ा। मुझे लगता है कि मुझे फोरट्रान और पास्कल में कोड करने के लिए प्रोत्साहित किया गया था जैसे ही मुझे कोई अच्छा मिला, मूलभूत जितना बुरा था, मेरे द्वारा उपयोग किए जाने वाले संस्करणों में GOSUB (यानी पुन: प्रयोज्य फ़ंक्शंस) भी नहीं था। –
सबसे अधिक संभावना है कि यह सबसे बेवकूफ पसंद था। न केवल बोलना आसान है, बल्कि समझने के लिए सहज है। कुछ var
से भी अधिक तर्क दे सकते हैं।
लेकिन मुझे लगता है कि इसके लिए थोड़ा और इतिहास है।
विकिपीडिया से:
दाना स्कॉट की LCF भाषा आधुनिक कार्यात्मक भाषाओं में लैम्ब्डा पथरी के विकास में एक चरण था। इस भाषा ने लेट एक्सप्रेशन पेश किया, जो उस समय से अधिकांश कार्यात्मक भाषाओं में दिखाई दिया है।
एएलजीओएल और पास्कल जैसी राज्य-पूर्ण अनिवार्य भाषाएं ब्लॉक संरचनाओं में कार्यों के प्रतिबंधित दायरे को लागू करने के लिए अनिवार्य रूप से एक अभिव्यक्ति को लागू करती हैं।
मुझे विश्वास है कि यह जावास्क्रिप्ट में let
के लिए भी एक प्रेरणा थी।
exebook's response को जोड़ना, कीवर्ड की गणित उपयोग जब जावास्क्रिप्ट/ES6 में इस्तेमाल भी अच्छी तरह से समाहित let
की scoping निहितार्थ हैं।विशेष रूप से, निम्नलिखित ES6 कोड toPrint
की ब्रेसिज़ में काम पर ध्यान नहीं देता और 'Hello World'
का मूल्य बाहर प्रिंट बस के रूप में के रूप में औपचारिक रूप गणित (विशेष रूप से सबूत के लेखन) में इस्तेमाल
let toPrint = 'Hello World.';
{
let toPrint = 'Goodbye World.';
}
console.log(toPrint); // Prints 'Hello World'
जाने इंगित करता है कि वर्तमान उदाहरण एक चर के केवल उस तार्किक विचार के दायरे के लिए मौजूद है। निम्नलिखित उदाहरण में, एक्स को नए विचार को दर्ज करने पर तुरंत एक नई पहचान प्राप्त होती है (आमतौर पर ये मुख्य विचार साबित करने के लिए आवश्यक अवधारणाएं हैं) और सब-सबूत के समापन पर तुरंत पुराने x पर वापस आती हैं। बेशक, कोडिंग के रूप में, इसे कुछ हद तक भ्रमित माना जाता है और इसलिए आमतौर पर अन्य चर के लिए एक अलग नाम चुनकर टाला जाता है।
चलो एक्स इतना और ऐसा हो ...
सबूत सामान
नए आइडिया {कुछ और होने दो एक्स ... कुछ साबित} निष्कर्ष नए आइडिया
पुराने x
के साथ मुख्य विचार साबित करेंमुझे लगता है कि यह वास्तव में उपयोगी है। स्वीकृत उत्तर लगभग थोड़ा भ्रामक है, क्योंकि यह उस मूल्य के बारे में बात करता है जो बदलने में सक्षम नहीं है, जो कि 'चलो' बिल्कुल नहीं है। 'चलो' गुंजाइश के बारे में सब कुछ है। – jinglesthula
चलिए एक अधिक तत्काल ब्लॉक स्तर सीमित दायरे का उपयोग करते हैं जबकि var आमतौर पर कार्यक्षेत्र या वैश्विक दायरा है।
ऐसा लगता है कि चलिए सबसे अधिक संभावना चुना गया था क्योंकि यह कई अन्य भाषाओं में पाया जाता है ताकि वे बेसिक, और कई अन्य चर को परिभाषित कर सकें।
वैरिएबल द्वारा घोषित वेरिएबल्स को उनके दायरे के रूप में परिभाषित किया गया है, साथ ही किसी भी निहित उप-ब्लॉक में। इस तरह, var var की तरह काम करता है। मुख्य अंतर यह है कि एक var चर का दायरा पूरे संलग्न कार्य है। नीचे कुछ उदाहरण देखें।
function varTest() {
var x = 1;
if (true) {
var x = 2; // same variable!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
if (true) {
let x = 2; // different variable
console.log(x); // 2
}
console.log(x); // 1
}
- 1. जावा की हाइबरनेट लाइब्रेरी के लिए "हाइबरनेट" नाम क्यों चुना गया था?
- 2. विधि java.lang.Thread.join() नाम क्यों दिया गया था?
- 3. .NET को .NET क्यों कहा गया था?
- 4. इंस्टेंस वैरिएबल घोषणाओं का प्लेसमेंट
- 5. कोई टैग नाम के लिए परिभाषित किया गया था: viewAction
- 6. पायथन में स्थैतिक तरीकों के लिए सिंटैक्स कैसे चुना गया था?
- 7. jQuery चुना गया प्लगइन:
- 8. क्यों^और $ regex में लाइन की शुरुआत और अंत का प्रतिनिधित्व करने के लिए चुना गया था?
- 9. चयनित नहीं चुना गया
- 10. रेडियो बटन चुना गया?
- 11. सी ++ घोषणाओं में फ़ंक्शन तर्क नाम क्यों महत्वहीन हैं?
- 12. InsertHelper क्यों बहिष्कृत किया गया था?
- 13. चुना गया विकल्प टूट गया है या ...?
- 14. वैरिएबल नाम में डॉट
- 15. वैरिएबल नाम में बैकटिक्स
- 16. त्रुटि: डेटाबेस नहीं चुना गया
- 17. चुना गया ड्रॉपडाउन सूची मॉडल
- 18. "वेरिएबल 'xxx' कभी उत्परिवर्तित नहीं किया गया था; 'चलो' निरंतर बदलना पर विचार करें" ERROR
- 19. इस कोड में एक विधि को एक और तरीके से कैसे चुना गया था?
- 20. चुना गया jQuery विजेट IE8
- 21. चलो-नाम बदलने समारोह टूटता कोड
- 22. x86_64 एबीआई में टेक्स्ट सेगमेंट की शुरुआत के रूप में पता 0x400000 क्यों चुना गया है?
- 23. std :: strstream बहिष्कृत क्यों किया गया था?
- 24. ViewPager onPage पहले पृष्ठ के लिए चुना गया
- 25. चुना गया/चयन 2 jQuery प्लगइन्स IE10
- 26. seq गणना निर्माता क्यों नहीं है "चलो!"
- 27. फ़ंक्शन घोषणाओं का जावास्क्रिप्ट स्कोप
- 28. आइटम को कैसे बनाया जाए चुना गया स्वचालित रूप से पहले प्रविष्टि को नहीं चुना गया
- 29. ऑब्जेक्ट में बराबर और हैशकोड परिभाषित क्यों किया गया था?
- 30. रेल में auto_link बहिष्कृत क्यों किया गया था?
[बेसिक] (https://en.wikipedia.org/wiki/BASIC), 1 9 62 में आविष्कार किया गया, 'एलईटी' का उपयोग किया गया। पहले भाषा के उदाहरण हो सकते हैं। –