वर्तमान में कौन से ब्राउज़र जावास्क्रिप्ट के 'लेट' कीवर्ड का समर्थन करते हैं?


80

मैं एक ऐप विकसित कर रहा हूं और कभी भी इंटरनेट एक्सप्लोरर के बारे में चिंता करने की ज़रूरत नहीं है और ए + ग्रेड ब्राउज़रों में मौजूद कुछ विशेषताओं को देख रहा हूं जो इंटरनेट एक्सप्लोरर 1 में नहीं हैं।

इन विशेषताओं में से एक, जिसे मैं चारों ओर खेलना चाहता था, वह है JavaScript का कीवर्ड

मैं फ़ायरफ़ॉक्स 3.6 ( उपयोगकर्ता-एजेंट स्ट्रिंग: मोज़िला / 5.0 (विंडोज; यू; विंडोज़ एनटी 5.1; एन-यूएस? आरवाई: 1.9.2) गेको / 20100115 में काम करने के लिए उनके किसी भी 'उदाहरण' को प्राप्त नहीं कर सकता हूं । फ़ायरफ़ॉक्स / 3.6 (.NET CLR 3.5.30729))। मुझे SyntaxError: missing ; before statementनिष्पादित करते समय मिलता है let foo = "bar"

तो, ब्राउज़र क्या कीवर्ड का समर्थन करते हैं? (या मुझ से कुछ गलत हो रहा है?)


जब IE पर आपके नॉट-केयरिंग-इफ़-इट-वर्क्स को समझने और सहमत होने के लिए, आपको यह विचार करना चाहिए कि "लेट" कीवर्ड केवल मोज़िला है, इसलिए भले ही यह कहना ठीक हो कि "आईई इसका समर्थन नहीं करता है", उचित इसे कहने का तरीका, "केवल मोज़िला इसका समर्थन करता है" होगा। जैसे हम IE-केवल टैग या कीवर्ड से बचते हैं, वैसे ही आपको और * -ऑनलाइन कीवर्ड से बचना चाहिए।
WhyNotHugo

ह्यूगो, आपको यह ध्यान रखना होगा कि HTML, CSS, JS अब केवल वेब-प्लेटफ़ॉर्म नहीं है। कोड ऐसा कोड होता है जो कभी भी IE के किसी भी संस्करण में, या किसी भी वेब ब्राउज़र के लिए नहीं चलेगा । :-)
डेविड मर्डोक

धरती पर Apple क्या करने की कोशिश कर रहा है .. यह 2015 है और letउनके दयनीय ब्राउज़र में समर्थन का कोई संकेत नहीं है।
सलमान वॉन अब्बास

3
कृपया ध्यान दें कि कई पुराने उत्तर (स्वीकृत उत्तर सहित) घटनाओं से आगे निकल गए हैं। सभी प्रमुख अप-टू-डेट ब्राउज़र ES2015 (उर्फ "ES6") letकीवर्ड का समर्थन करते हैं, लेकिन इस लेखन का समर्थन कुछ सर्किलों (उदाहरण के लिए केवल iOS 10 सफारी) में काफी नया है।
टीजे क्राउडर

मेरा सुझाव है कि अब स्वीकार किए गए उत्तरों में से एक को अपने सही उत्तर में बदल दें। हां, वर्तमान में स्वीकृत एक ही समय में सही था, लेकिन यह कई वर्षों से गलत है, और एसओ का उद्देश्य ज्ञान का भंडार है, न कि एक ऐतिहासिक संग्रह। :-)
टीजे क्राउडर

जवाबों:


56

संपादित करें : letऔर constसभी आधुनिक ब्राउज़रों द्वारा समर्थित हैं और ECMAScript 2015 (ES6) विनिर्देश का हिस्सा हैं।

मूल रूप से अगर आपको IE11 के नीचे कुछ भी समर्थन करने की आवश्यकता नहीं है, letऔर constआजकल उपयोग करने के लिए सुरक्षित हैं।

IE11 पर छोरों के letसाथ प्रयोग करने पर एक छोटा क्वर्की होता है for, वैरिएबल उस forब्लॉक के साथ बाध्य नहीं होता है जैसा कि आप अपेक्षा करते हैं, यह व्यवहार करता है var...

यह भी देखें: चलो और कास्ट का समर्थन करें


2010 से पुराने और पुराने उत्तर: जो एक्सटेंशन ECMA-Standard नहीं हैं, वे केवल मोज़िला कार्यान्वयन द्वारा समर्थित हैं।

ब्राउज़र वातावरण पर आपको इसका उपयोग करने के लिए जावास्क्रिप्ट संस्करण संख्या को अपने scriptटैग में शामिल करना चाहिए :

<script type="application/javascript;version=1.7">  
  var x = 5;
  var y = 0;

  let (x = x+10, y = 12) {
    alert(x+y + "\n");
  }

  alert((x + y) + "\n");
</script>

1
कुंआ; मैंने सिर्फ अपना उत्तर अपडेट किया और फिर पता चला कि आपने मुझे एक मिनट में हरा दिया;) +1
हर्मेन

1
धन्यवाद, मैं एचटीएमएल 5 के '<स्क्रिप्ट> </ स्क्रिप्ट>' का उपयोग कर रहा था बिना टाइप एटर के।
डेविड मर्डोक

19
ध्यान दें कि letकीवर्ड है एकमा स्क्रिप्ट 6 (मसौदा) मानक में अब।
निको बर्न्स

3
Chrome में 19+ "एक्सपेरिमेंटल जावास्क्रिप्ट फीचर्स" फ्लैग और नोड.जेएस के माध्यम से सक्षम किया जा सकता है --harmony
सलमान वॉन अब्बास

2
है ;version=1.7अभी भी Firefox में आवश्यक? मैंने letकंसोल में कोशिश की और यह काम कर गया।
सैम

31

अप्रैल 2017 तक:

  • सभी अप-टू-डेट प्रमुख ब्राउज़र जैसे क्रोम, फ़ायरफ़ॉक्स, और एज ES2015 (उर्फ "ईएस 6") letकीवर्ड का समर्थन करते हैं ।

  • आईओएस सफारी ने letओएस 10 (जैसे, ओएस 9 नहीं) तक समर्थन नहीं किया।

  • कुछ पुराने ब्राउज़र, जैसे IE9-IE11, प्रारंभिक संस्करण का समर्थन करते हैं , letलेकिन ES2015 द्वारा परिभाषित शब्दार्थ का समर्थन नहीं करते हैं (विशेषकर forलूप के हेडर में घोषणाओं के संबंध में )। तो यह एक सिंटैक्स त्रुटि नहीं है, और यह चर घोषित करता है, लेकिन यह उस तरीके से काम नहीं करता है जिस तरह से यह माना जाता है। उदाहरण के लिए, एक सही कार्यान्वयन में, निम्नलिखित लॉग 0, 1, और 2; IE9-IE11 पर, यह 3, 3, 3 को लॉग करता है:

  • IE8 जैसे अप्रचलित ब्राउज़र इसका बिल्कुल समर्थन नहीं करते हैं।


1
एक सहायक उत्तर: +1।
MWiesner

25

इंटरनेट एक्सप्लोरर 11 में आंशिक समर्थन है ( forगुंजाइश गलत है ) और सभी मौजूदा ब्राउज़रों में पूर्ण समर्थन ( ECMAScript 6 संगतता तालिका: चलो )।


1
जबकि IE11 letकीवर्ड को "समर्थन" करता है (इसमें वह फेंक नहीं देता है SyntaxError), इसका कार्यान्वयन कल्पना के अनुरूप नहीं है - चर ठीक से ब्लॉक-स्कोप नहीं है। (यह भी ध्यान दें कि कोई भी IE 11 कभी नहीं होगा और नहीं होगा)
निश्चितप्रक्रिया

12

इंटरनेट एक्सप्लोरर और ओपेराlet किसी भी ब्राउज़र संस्करण पर समर्थन नहीं करते हैं , फ़ायरफ़ॉक्स संस्करण 2.0 से और सफारी 3.2 से।

इस जावास्क्रिप्ट संस्करण को विकिपीडिया पर देखें ।

मुझे अभी पता चला है कि आपको यह परिभाषित करने की आवश्यकता है कि आप जावास्क्रिप्ट 1.7 का उपयोग करते हैं या नहीं। तो आपका कोड होगा:

<script type="application/javascript;version=1.7"> ... </script>

लगता है कि इस संस्करण के विनिर्देशन को अब हटा दिया गया है। यदि मैं संस्करण निर्दिष्ट करने का प्रयास करता हूं, तो क्रोम उस जावास्क्रिप्ट को लोड नहीं कर रहा है।
जय शाह


3

यह प्रश्न पूछे जाने के बाद बहुत समय बीत चुका है: ECMAScript 2015 (ES6) में 'लेट' और 'कॉन्स्ट' कीवर्ड पेश किए गए हैं। इस भयानक ES6 संगतता तालिका में 'लेट' या 'कॉन्स्ट' की खोज करें: https://kangax.github.io/compat-table/es6/


2

बस एक अपडेट: क्रोम अब समर्थन करता है letलेकिन केवल तभी जब आप घोषणा करते हैं "use strict"; निर्देशन।

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