जावास्क्रिप्ट सख्त उपयोग करें
"use strict";
परिभाषित करता है कि जावास्क्रिप्ट कोड को "सख्त मोड" में निष्पादित किया जाना चाहिए।
"सख्त उपयोग करें" निर्देश
"use strict"
ईसीएमएस्क्रिप्ट संस्करण 5 में निर्देश नया था ।
यह एक कथन नहीं है, बल्कि एक शाब्दिक अभिव्यक्ति है, जिसे जावास्क्रिप्ट के पुराने संस्करणों द्वारा अनदेखा किया गया है।
इसका उद्देश्य "use strict"
यह इंगित करना है कि कोड को "सख्त मोड" में निष्पादित किया जाना चाहिए।
सख्त मोड के साथ, उदाहरण के लिए, आप अघोषित चर का उपयोग नहीं कर सकते।
सभी आधुनिक ब्राउज़र इंटरनेट एक्सप्लोरर 9 और निम्न को छोड़कर "सख्त उपयोग करें" का समर्थन करते हैं:
Directive | |||||
---|---|---|---|---|---|
"use strict" | 13.0 | 10.0 | 4.0 | 6.0 | 12.1 |
तालिका में संख्याएं पहले ब्राउज़र संस्करण को निर्दिष्ट करती हैं जो पूरी तरह से निर्देश का समर्थन करता है।
आप अपने सभी कार्यक्रमों में सख्त मोड का उपयोग कर सकते हैं। यह आपको क्लीनर कोड लिखने में मदद करता है, जैसे आपको अघोषित चर का उपयोग करने से रोकना।
"use strict"
सिर्फ एक स्ट्रिंग है, इसलिए IE 9 एक त्रुटि नहीं फेंकेगा, भले ही वह इसे न समझे।
सख्त मोड घोषित करना
"सख्त उपयोग करें" जोड़कर सख्त मोड घोषित किया गया है ; किसी स्क्रिप्ट या फ़ंक्शन की शुरुआत में।
एक स्क्रिप्ट की शुरुआत में घोषित, इसका वैश्विक दायरा है (स्क्रिप्ट में सभी कोड सख्त मोड में निष्पादित होंगे):
उदाहरण
"use strict";
x = 3.14; // This will cause an error
because x is not declared
उदाहरण
"use strict";
myFunction();
function myFunction() {
y = 3.14; // This will also cause an error
because y is not declared
}
किसी फ़ंक्शन के अंदर घोषित, इसका स्थानीय दायरा है (केवल फ़ंक्शन के अंदर कोड सख्त मोड में है):
x = 3.14; // This will not cause an error.
myFunction();
function
myFunction() {
"use strict";
y = 3.14; // This will cause an error
}
"सख्त उपयोग"; वाक्य - विन्यास
सख्त मोड घोषित करने के लिए सिंटैक्स, जावास्क्रिप्ट के पुराने संस्करणों के साथ संगत होने के लिए डिज़ाइन किया गया था।
एक जावास्क्रिप्ट प्रोग्राम में एक संख्यात्मक शाब्दिक (4 + 5;) या एक स्ट्रिंग अक्षर ("जॉन डो";) को संकलित करने से कोई दुष्प्रभाव नहीं होता है। यह बस एक गैर-मौजूदा चर के लिए संकलित करता है और मर जाता है।
तो "use strict";
केवल नए संकलक के लिए मायने रखता है जो इसका अर्थ "समझते" हैं।
सख्त मोड क्यों?
सख्त मोड "सुरक्षित" जावास्क्रिप्ट लिखना आसान बनाता है।
सख्त मोड पहले स्वीकृत "खराब सिंटैक्स" को वास्तविक त्रुटियों में बदल देता है।
एक उदाहरण के रूप में, सामान्य जावास्क्रिप्ट में, एक चर नाम को गलत टाइप करने से एक नया वैश्विक चर बन जाता है। सख्त मोड में, यह एक त्रुटि फेंक देगा, जिससे गलती से वैश्विक चर बनाना असंभव हो जाएगा।
सामान्य जावास्क्रिप्ट में, एक डेवलपर को गैर-लिखने योग्य गुणों को मान निर्दिष्ट करते हुए कोई त्रुटि प्रतिक्रिया प्राप्त नहीं होगी।
सख्त मोड में, एक गैर-लिखने योग्य संपत्ति, एक गेटटर-केवल संपत्ति, एक गैर-मौजूदा संपत्ति, एक गैर-मौजूदा चर, या एक गैर-मौजूदा वस्तु के लिए कोई असाइनमेंट, एक त्रुटि फेंक देगा।
सख्त मोड में अनुमति नहीं है
घोषित किए बिना, एक चर का उपयोग करने की अनुमति नहीं है:
"use strict";
x = 3.14; // This will cause an error
वस्तुएँ भी चर हैं।
किसी वस्तु को घोषित किए बिना उसका उपयोग करने की अनुमति नहीं है:
"use strict";
x = {p1:10, p2:20}; // This will cause an error
एक चर (या वस्तु) को हटाने की अनुमति नहीं है।
"use strict";
let x = 3.14;
delete x; // This
will cause an error
किसी फ़ंक्शन को हटाने की अनुमति नहीं है।
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
पैरामीटर नाम को डुप्लिकेट करने की अनुमति नहीं है:
"use strict";
function x(p1, p1) {}; // This will cause an error
अष्टक अंकीय अक्षर की अनुमति नहीं है:
"use strict";
let x = 010; // This
will cause an error
ऑक्टल एस्केप वर्णों की अनुमति नहीं है:
"use strict";
let x = "\010"; // This will cause an error
केवल-पढ़ने के लिए संपत्ति को लिखने की अनुमति नहीं है:
"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // This
will cause an error
केवल-प्राप्त संपत्ति को लिखने की अनुमति नहीं है:
"use strict";
const obj = {get x()
{return 0} };
obj.x = 3.14; // This
will cause an error
एक न हटाने योग्य संपत्ति को हटाने की अनुमति नहीं है:
"use strict";
delete Object.prototype; // This will cause an error
शब्द eval
का उपयोग चर के रूप में नहीं किया जा सकता है:
"use strict";
let eval = 3.14; // This will cause an error
शब्द arguments
का उपयोग चर के रूप में नहीं किया जा सकता है:
"use strict";
let arguments = 3.14; // This will cause an error
with
बयान की अनुमति नहीं है :
"use strict";
with (Math){x = cos(2)}; // This will cause an error
सुरक्षा कारणों से, eval()
उस क्षेत्र में चर बनाने की अनुमति नहीं है जहां से इसे बुलाया गया था:
"use strict";
eval ("let x = 2");
alert (x); // This
will cause an error
फ़ंक्शन में this
कीवर्ड सख्त मोड में अलग तरह से व्यवहार करता है।
कीवर्ड उस this
ऑब्जेक्ट को संदर्भित करता है जिसे फ़ंक्शन कहा जाता है।
यदि ऑब्जेक्ट निर्दिष्ट नहीं है, तो सख्त मोड में फ़ंक्शन वापस आ जाएगा undefined
और सामान्य मोड में फ़ंक्शन वैश्विक ऑब्जेक्ट (विंडो) लौटाएगा:
"use strict";
function myFunction() {
alert(this); // will alert "undefined"
}
myFunction();
भविष्य दृढ़!
भविष्य के जावास्क्रिप्ट संस्करणों के लिए आरक्षित खोजशब्दों को सख्त मोड में चर नामों के रूप में उपयोग नहीं किया जा सकता है।
ये:
- औजार
- इंटरफेस
- होने देना
- पैकेज
- निजी
- संरक्षित
- जनता
- स्थिर
- उपज
"use strict";
let public = 1500; // This will cause an error
ध्यान रहें!
"सख्त उपयोग करें" निर्देश केवल एक स्क्रिप्ट या फ़ंक्शन की शुरुआत में पहचाना जाता है।