जावास्क्रिप्ट आरक्षित कीवर्ड को एक चर नाम के रूप में क्यों अनुमति दी जाती है?


21

हम जानते हैं कि letएक आरक्षित खोजशब्द है जो जावास्क्रिप्ट में एक चर को परिभाषित करता है।

var let = 2;
console.log(let); // return 2

तो यह एक त्रुटि क्यों नहीं है?


3
का डुप्लीकेट stackoverflow.com/questions/40585224/...
— Boann

जवाबों:


25

let सख्त मोड में केवल एक आरक्षित शब्द है:

'use strict';
var let = 5;

बिना पढ़ा हुआ वाक्य रचना: अप्रत्याशित सख्त मोड आरक्षित शब्द

ऐसा इसलिए है क्योंकि ब्राउज़र आमतौर पर अन्य सभी के ऊपर पीछे की संगतता को प्राथमिकता देते हैं । यद्यपि letES2015 में पेश किया गया था (और इसके उपयोग को कुछ समय पहले फिर से इस्तेमाल किया गया था), पूर्व स्क्रिप्ट जो letएक चर नाम के रूप में उपयोग की जाती हैं, वांछित के रूप में काम करना जारी रखेंगी। उदाहरण के लिए, यदि आपकी स्क्रिप्ट 2008 में लिखी गई थी:

var let = 2;
console.log(let);

फिर यह 2020 तक भी काम करना जारी रखेगा।

बहुत समान कारणों के लिए, asyncऔर चर नामों के रूप मेंawait भी अनुमति दी गई है ।

इस कारण से कि letसख्त मोड में त्रुटियों का उपयोग - सख्त मोड ES5 में 2009 में पेश किया गया था। इसके बाद, भाषा डिजाइनरों ने देखा कि नए कीवर्ड का उपयोग चर घोषित करने के लिए भविष्य में एक संभावना थी, लेकिन यह नहीं था पत्थर में अभी तक सेट नहीं है, और ES6 अभी भी एक लंबा रास्ता बंद था। एक बार ES5 बाहर आने के बाद, स्क्रिप्ट लेखक कोड को कम भ्रामक बनाने के लिए सख्त मोड को चुन सकते हैं, और चुप त्रुटियों को स्पष्ट त्रुटियों में बदल सकते हैं। यद्यपि अभी तकlet परिवर्तनीय घोषणा के लिए उपयोग करने योग्य नहीं था , लेकिन इसे सख्त मोड में एक चर नाम के रूप में निषिद्ध करने से भविष्य की स्क्रिप्ट की पठनीयता में सुधार हुआ, जो किसी भी मौजूदा स्क्रिप्ट को नहीं तोड़ते हुए, सख्त मोड में चुना गया।


2

letऔर कुछ अन्य कार्य केवल कठोर मोड में आरक्षित शब्दों के रूप में कार्य करते हैं। चश्मा कहते हैं

कठोर मोड में अनुमति नहीं दी गई : उन उस समय ऐसी सख्त मोड कोड में, पहचानकर्ता के रूप में अनुमति नहीं है: let, static, implements, interface, package, private, protected, और public;

आप उन letशब्दों की सूची के अंदर देख सकते हैं जो केवल सख्त मोड में अस्वीकृत हैं। यदि आप letचर नाम के रूप में उपयोग करने के लिए त्रुटि फेंकना चाहते हैं तो आप सख्त मोड का उपयोग कर सकते हैं

"use strict";
var let = 3


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.