जावास्क्रिप्ट सख्त मोड
- पिछला पृष्ठ JS Hoisting
- अगला पृष्ठ JS थिस कीवर्ड
"use strict";
जावास्क्रिप्ट को "सख्त मोड" में चलाने के लिए निर्देशित करता है।
"use strict" निर्देश
"use strict"
जावास्क्रिप्ट 1.8.5 में नई निर्देश (एससीएमएस संस्करण 5) है।
यह एक व्याकरण नहीं है, बल्कि एक लिखावज एक्सप्रेशन है, जो पहले के संस्करण के जावास्क्रिप्ट इसे नज़र अवरुद्ध करेगा।
"use strict";
के काम करना है जो जावास्क्रिप्ट कोड को "सख्त मोड" में चलाने के लिए निर्देश करता है।
सख्त मोड में, आप उदाहरण के लिए, घोषित नहीं किए वाले वेरियेबल का उपयोग नहीं कर सकते।
निम्नलिखित संस्करण के ब्राउज़र सख्त मोड को समर्थित करते हैं:
- वेर्सन 10 के बाद के IE
- वेर्सन 4 के बाद के Firefox
- वेर्सन 13 के बाद के Chrome
- वेर्सन 5.1 के बाद के Safari
- वेर्सन 12 के बाद के Opera
सख्त मोड को घोषित करना
स्क्रिप्ट या फ़ंक्शन के शुरू में जोड़कर "use strict";
सख्त मोड को घोषित करने के लिए
सख्त मोड को स्क्रिप्ट के शुरू में घोषित करना, जो वैश्विक क्षेत्रफल (स्क्रिप्ट के सभी कोड सख्त मोड में चलेगा):
उदाहरण
"use strict"; x = 3.14; // यह त्रुटि पैदा करेगा क्योंकि x अभी घोषित नहीं हुआ है
उदाहरण
"use strict"; myFunction(); function myFunction() { y = 3.14; // यह त्रुटि पैदा करेगा क्योंकि y अभी घोषित नहीं हुआ है }
सख्त मोड को फ़ंक्शन में घोषित करना, जो स्थानीय क्षेत्रफल (केवल फ़ंक्शन के भीतर का कोड सख्त मोड में चलेगा):
x = 3.14; // यह त्रुटि पैदा नहीं करेगा myFunction(); function myFunction() { "use strict"; y = 3.14; // यह त्रुटि पैदा करेगा }
"use strict"; व्याकरण
सख्त मोड के व्याकरण को पहले की संस्करण के साथ सहयोगी तौर पर डिजाइन किया गया है।
जावास्क्रिप्ट के प्रोग्राम में नंबरिक लिखावज (जैसे 4+5) या स्ट्रिंग लिखावज ("Bill Gates") ने नकारात्मक प्रभाव नहीं होगा। यह केवल अस्तित्व नहीं वाले वेरियेबल के रूप में कम्पाइल होगा और फिर गायब हो जाएगा।
सभी "use strict";
सिर्फ उन्हें प्रभावित करता है जो इसके अर्थ को "समझते हैं"
क्यों सख्त मोड का उपयोग करें?
सख्त मोड हमें "सुरक्षित" JavaScript लिखने में आसानी प्रदान करता है。
सख्त मोड में पहले अनुमति दिए गए "बुरे वाक्यबद्ध" को वास्तविक त्रुटि में बदल दिया गया है。
उदाहरण के लिए, सामान्य JavaScript में, वारियेबल का गलत नाम लिखने से नई ग्लोबल वारियेबल बन जाती है। सख्त मोड में, इससे त्रुटि फेंकी जाएगी और ग्लोबल वारियेबल अनावश्यक रूप से बनने की संभावना नहीं है。
सामान्य JavaScript में, अनदेखी गई गुण को लिखने पर, डेवलपर को कोई त्रुटि रिपोर्ट नहीं मिलेगी。
सख्त मोड में, अनदेखी गई गुण को लिखने, या अस्तित्व नहीं वाले वारियेबल या ऑब्जैक्ट को लिखने पर त्रुटि फेंकी जाएगी。
सख्त मोड में अनुमति न दिए गए चीजें
वारियेबल को घोषित न करके उसके उपयोग को अनुमति नहीं है:
"use strict"; x = 3.14; // यह त्रुटि पैदा करेगा
ऑब्जैक्ट भी वारियेबल है
ऑब्जैक्ट को न घोषित करके उसके उपयोग को अनुमति नहीं है:
"use strict"; x = {p1:10, p2:20}; // यह त्रुटि पैदा करेगा
वारियेबल (या ऑब्जैक्ट) को मिटाना अनुमति नहीं है:
"use strict"; var x = 3.14; delete x; // यह त्रुटि पैदा करेगा
फ़ंक्शन को मिटाना अनुमति नहीं है:
"use strict"; function x(p1, p2) {}; delete x; // यह त्रुटि पैदा करेगा
दोहरे पारामीटर नाम को लिखना अनुमति नहीं है:
"use strict"; function x(p1, p1) {}; // यह त्रुटि पैदा करेगा
अष्टांकिक संख्या लिखाई को लिखना अनुमति नहीं है:
"use strict"; var x = 010; // यह त्रुटि पैदा करेगा
इस्केप चारक्टर को लिखना अनुमति नहीं है:
"use strict"; var x = \010; // यह त्रुटि पैदा करेगा
केवल पढ़ने वाले गुण को लिखने की अनुमति नहीं है:
"use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // यह त्रुटि पैदा करेगा
केवल पढ़ने वाले गुण को लिखने की अनुमति नहीं है:
"use strict"; var obj = {get x() {return 0} }; obj.x = 3.14; // यह त्रुटि पैदा करेगा
अनदेखी गई गुण को मिटाना अनुमति नहीं है:
"use strict"; delete Object.prototype; // यह त्रुटि पैदा करेगा
शब्द "eval" को वारियेबल के रूप में नहीं इस्तेमाल किया जा सकता है:
"use strict"; var eval = 3.14; // यह त्रुटि पैदा करेगा
शब्द "arguments" को वारियेबल के रूप में नहीं इस्तेमाल किया जा सकता है:
"use strict"; var arguments = 3.14; // 这将引发错误
with
语句是不允许的:
"use strict"; with (Math){x = cos(2)}; // 这将引发错误
处于安全考虑,不允许 eval()
在其被调用的作用域中创建变量:
"use strict"; eval ("var x = 2"); alert (x); // यह त्रुटि फेंकेगी
फ़ंक्शन f() के समान के फ़ंक्शन बुलाए जाने में this का मूल्य ग्लोबल ऑब्जेक्ट है।सख्त मोड में अब यह undefined
。
भविष्य के लिए सुरक्षा
सख्त मोड में भविष्य के लिए आरक्षित शब्दों का उपयोग नहीं किया जा सकता है।वे हैं:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict"; var public = 1500; // यह त्रुटि फेंकेगी
चेतावनी
"use strict"
डिरेक्टिव केवल स्क्रिप्ट या फ़ंक्शन केशुरूआतपहचाना गया है。
- पिछला पृष्ठ JS Hoisting
- अगला पृष्ठ JS थिस कीवर्ड