लंबे समय तक, जावास्क्रिप्ट संगतता मुद्दों के बिना विकसित हुआ। भाषा में नई सुविधाएँ जोड़ी गईं जबकि पुरानी कार्यक्षमता नहीं बदली।
मौजूदा कोड को कभी नहीं तोड़ने का इसका लाभ था। लेकिन नकारात्मक पक्ष यह था कि जावास्क्रिप्ट के रचनाकारों द्वारा की गई कोई भी गलती या अपूर्ण निर्णय हमेशा के लिए भाषा में फंस गया।
2009 तक ऐसा ही था जब ECMAScript 5 (ES5) आया। तब इसने भाषा में नई सुविधाएँ जोड़ीं और कुछ मौजूदा को संशोधित किया। पुराने कोड को काम करने के लिए, ऐसे अधिकांश संशोधन डिफ़ॉल्ट रूप से बंद होते हैं। आपको उन्हें एक विशेष निर्देश के साथ स्पष्ट रूप से सक्षम करने की आवश्यकता है: "use strict".
निर्देश एक स्ट्रिंग की तरह दिखता है: "use strict" या 'use strict'. जब यह एक स्क्रिप्ट के शीर्ष पर स्थित होता है, तो पूरी स्क्रिप्ट "आधुनिक" तरीके से काम करती है।
उदाहरण के लिए:
"use strict";
// this code works the modern way
...बहुत जल्द हम फंक्शन (कमांड को ग्रुप करने का एक तरीका) सीखने जा रहे हैं, तो आइए पहले से ध्यान दें कि किसी फंक्शन की शुरुआत में "use strict" लगाया जा सकता है। ऐसा करने से केवल उस फंक्शन में स्ट्रिक्ट मोड सक्षम होता है। लेकिन आमतौर पर लोग इसका इस्तेमाल पूरी स्क्रिप्ट के लिए करते हैं।
कृपया सुनिश्चित करें कि `"use strict"` आपकी स्क्रिप्ट के शीर्ष पर है, अन्यथा सख्त मोड सक्षम नहीं किया जा सकता है।
Strict मोड यहां सक्षम नहीं है:
```js no-strict
alert("some code");
// "use strict" नीचे अनदेखा किया गया है, यह सबसे ऊपर होना चाहिए
"use strict";
// strict mode सक्रिय नहीं है
```
`"use strict"` के ऊपर केवल टिप्पणियां ही दिखाई दे सकती हैं।
```warn header="use strict को रद्द करने का कोई तरीका नहीं है"
`"no use strict"` जैसा कोई निर्देश नहीं है जो इंजन को पुराने व्यवहार में बदल देता है।
एक बार जब हम सख्त मोड में प्रवेश कर जाते हैं, तो हम इसे वापस नहीं बदल सकते।
## Browser console
जब आप [developer console](info:devtools) का उपयोग करते हैं कोड चलाने के लिए, कृपया ध्यान दें कि यह डिफ़ॉल्ट रूप से `"use strict"` नहीं करता है।
कभी-कभी, जब `"use strict"` कुछ बदलाव करता है, तो आपको गलत परिणाम मिलेंगे।
तो, वास्तव में `use strict` का उपयोग कैसे करें कंसोल में?
सबसे पहले, आप `key:Shift+Enter` दबाने की कोशिश कर सकते हैं कई पंक्तियों को इनपुट करने के लिए, और डालें `use strict` शीर्ष पर, इस तरह:
```js
'use strict'; <Shift+Enter for a newline>
// ...your code
<Enter to run>
यह Firefox और Chrome जैसे अधिकांश ब्राउज़रों में काम करता है।
यदि ऐसा नहीं होता है, उदाहरण के लिए किसी पुराने ब्राउज़र में, तो "use strict" को सुनिश्चित करने का एक बदसूरत, लेकिन विश्वसनीय तरीका है। इसे इस तरह के रैपर के अंदर रखें:
(function() {
'use strict';
// ...your code here...
})()सवाल स्पष्ट लग सकता है, लेकिन ऐसा नहीं है।
कोई स्क्रिप्ट को "use strict" से शुरू करने की सिफारिश कर सकता है . . . लेकिन आप जानते हैं कि क्या अच्छा है?
आधुनिक जावास्क्रिप्ट "कक्षाओं" और "मॉड्यूल" का समर्थन करता है - जो की उन्नत भाषा संरचनाएं है (हम निश्चित रूप से इन्हे जानेंगे), जोuse strict को सक्षम करें खुद ब खुद। यदि हम उनका उपयोग करते हैं तो हमें "use strict" निर्देश लिखने की आवश्यकता नहीं है।
तो अब के लिए "use strict"; आपकी स्क्रिप्ट के शीर्ष पर एक स्वागत योग्य अतिथि है। बाद में, जब आपका कोड पूरा कक्षाओं और मॉड्यूल में लिखा हो, तो आप इसे छोड़ सकते हैं।
अभी तक, हमें use strict के बारे में सामान्य रूप से पता चल गया है।
अगले अध्यायों में, जैसे जैसेि हम भाषा की विशेषताओं को सीखते हैं, हम सख्त और पुराने तरीकों के बीच अंतर देखेंगे। सौभाग्य से, बहुत सारे नहीं हैं और वे वास्तव में हमारे जीवन को बेहतर बनाते हैं।
इस ट्यूटोरियल में सभी उदाहरण सख्त मोड मानते हैं जब तक कि (बहुत ही कम) अन्यथा निर्दिष्ट न हो।