2015-03-26 5 views
18

ECMAScript 5 (उर्फ जावास्क्रिप्ट,) में मैं अपने समारोह के शीर्ष पर "use strict" जोड़कर सख्त मोड ट्रिगर कर सकते हैं (या फ़ाइल, लेकिन यह हतोत्साहित किया जाता है।)कौन सी ईसीएमएस्क्रिप्ट 6 विशेषताएं सख्त मोड का संकेत देती हैं?

मैं समझता हूँ कि ECMAScript 6 में, कुछ वाक्य रचना सुविधाओं बदल जाएगी सख्त मोड पर, विशेष रूप से class, और मॉड्यूल (हालांकि आप उन्हें करते हैं।)

ईसीएमएस्क्रिप्ट 6 दुनिया में, सख्त मोड को ट्रिगर करने के तरीकों की पूरी सूची क्या है?

+0

मैं अनुमान लगा रहा हूं कि es6 सभी सख्त मोड है। –

+0

वह मूल योजना थी, लेकिन पीछे की संगतता चिंताओं का मतलब है कि spec में अभी भी "लक्स मोड" के लिए बहुत अधिक समर्थन है। –

+5

[यहां ड्राफ्ट स्पेक का प्रासंगिक अनुभाग है।] (Http://people.mozilla.org/~jorendorff/es6-draft.html#sec-strict-mode-code) – Pointy

उत्तर

21

The spec का कहना है:

  • मॉड्यूल कोड हमेशा सख्त मोड कोड है।
  • क्लासडिक्लेरेशन या क्लासएक्सप्रेस सख्त मोड कोड हैं।
  • ...

बाकी सिर्फ ES5 से जाना जाता बातें, मूल रूप से हर वैश्विक/eval/समारोह कोड कि "use strict"; directive के साथ शुरू होता है। यह नए ES6 फ़ंक्शन प्रकारों (तीर, जनरेटर, विधि वाक्यविन्यास) के भीतर भी काम करता है।

+3

मैं कुछ हद तक आश्चर्यचकित हूं कि जेनरेटर पूरी तरह से सख्त नहीं हैं। –

+0

उत्तर और spec (उपर्युक्त किसी से जुड़े) में जानकारी का एक महत्वपूर्ण टुकड़ा गुम है: यदि मैं ईएस 2015 का उपयोग करता हूं लेकिन कोई ईएस 2015 मॉड्यूल नहीं करता? क्योंकि मैं io.js का उपयोग कर रहा हूं और नया मॉड्यूल सिस्टम अभी तक उपयोग नहीं किया जा सकता है (जब तक मैं बैबेल का उपयोग नहीं करता), इसलिए मैं _do_ ES 2015 सुविधाओं का उपयोग करता हूं लेकिन जब तक मैं वास्तव में * मूल रूप से * नए मॉड्यूल सिंटैक्स का उपयोग नहीं कर सकता तब तक प्रतीक्षा करें। क्या इस परिदृश्य में सख्त मोड अंतर्निहित है या नहीं? यदि नहीं, तो उन्हें वास्तव में "ईएस 2015 मॉड्यूल" कहना चाहिए। यह node.js/io.js के लिए केवल प्रासंगिक है क्योंकि ब्राउज़र में यह स्पष्ट है, लेकिन node.js में पहले से ही मॉड्यूल हैं .... –

+0

@ मोरेनोनोशिन: जैसा कि उत्तर कहता है, गैर-मॉड्यूल में सख्त मोड के नियम केवल हैं ES5 के समान ही। मॉड्यूल स्कोप आईईएफई सख्त मोड का उपयोग करने के लिए नोड ("मॉड्यूल") स्क्रिप्ट को अभी भी "सख्त उपयोग" के साथ स्पष्ट रूप से शुरू करने की आवश्यकता है। – Bergi

संबंधित मुद्दे